API поля в запросе и ответе

Все вопросы/проблемы по установке и использовании.
Ответить
Аватара пользователя
Евгений
Сообщения: 485
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

API поля в запросе и ответе

Сообщение Евгений »

По работе с API два вопроса.

1. Поля в теле запроса.
Для сторонних пользователей (другая организация) организовал доступ по API для получения данных. Сторонняя система отправляет в Руководитель запрос JSON с телом такого вида:

Код: Выделить всё

{
  "key": "====",
  "username": "API",
  "password": "====",
  "action": "select",
  "entity_id": 21,
  "filters":{
    "158":"Проект"
    }
}
И получает результат:

Код: Выделить всё

{
  "status": "success",
  "data": [
    {
      "id": "1",
      "parent_item_id": "0",
      "date_added": "22.11.2024 15:58",
      "date_updated": "22.11.2024 15:59",
      "created_by": "1",
      "197": "",
      "153": "1",
      "154": "22.11.2024 15:58",
      "155": "А Администратор",
      "156": "Срочный",
      "156_db_value": "34",
      "157": "Новый",
      "157_db_value": "37",
      "158": "Проект",
      "203": "22.11.2024 15:59",
      "159": "",
      "160": "проект",
      "162": "",
      "161": "",
      "161_db_value": ""
    }
  ],
  "page": 1,
  "number_of_rows": 1,
  "number_of_pages": 1
}
Вопрос - можно ли как-то изменить набор полей в теле запроса? Зачем сторонним системам знать, что у меня сущность "Проекты" имеет код 21 ? Зачем им знать код 158 поля "Заголовок" для сущности "Проекты" ? Можно ли как-то создать свой собственный набор полей для запроса, с символьными названиями?

2. Поля в ответе
Для пользователя "API" на сущность 21 "Проекты" даны права доступа "Просмотр всех записей", а доступ к полям Проектов скрыт для всех полей, только для "Название" (ИД=158) оставлен доступ "Только просмотр". Однако запрос API возвращает полный набор всех полей этой сущности.

По всей видимости API не учитывает правила ограничения доступа. Как ограничить набор полей, которые выдаются пользователю в ответе? И коды полей тоже бы подменять, чтобы видели не "158 : Проект", а "Название : Проект".
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1077
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: API поля в запросе и ответе

Сообщение Fait »

Вышло простой - писать собственный API для обработки их запросов)
Аватара пользователя
Евгений
Сообщения: 485
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: API поля в запросе и ответе

Сообщение Евгений »

Fait писал(а): 04 дек 2024, 13:50 Вышло простой - писать собственный API для обработки их запросов)
Я именно так и сделал, пока в виде отдельного сервиса. Который с одной стороны принимает запросы от сторонней системы, а другим концом смотрит в базу Руководителя и берет оттуда данные + сопутствующие данные из ещё одной базы на Постгресе.

Но мне такое не нравится. В идеале хотелось бы чтобы в Руководителе был еще один "пустой" API, который принимал бы любые запросы. Чтобы я мог сам разбирать поля запроса так как мне нужно и формировать ответный JSON тоже в любом произвольном виде.

Возможно ли такое добавить в Руководитель?
Аватара пользователя
Евгений
Сообщения: 485
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: API поля в запросе и ответе

Сообщение Евгений »

Если я правильно понимаю, то в Руководителе не предусмотрен API произвольного вида, можно обратиться только с запросом к какой-то определенной сущности. И в ответ будут включены только записи из неё.
Аватара пользователя
Евгений
Сообщения: 485
Зарегистрирован: 11 июл 2016, 13:21
Имя: Евгений
Откуда: Петропавловск-Камчатский

Re: API поля в запросе и ответе

Сообщение Евгений »

Fait писал(а): 04 дек 2024, 13:50 Вышло простой - писать собственный API для обработки их запросов)
Так и сделал. Написал простейший API обертку, принимает запросы в том виде как мне нужно, берет данные напрямую из базы, и выдаёт только то что нужно видеть сторонней системе. Но было бы удобнее, если возможность использовать кастомный API была бы прямо из коробки. Попробую оформить этот сервис в виде плагина.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 1077
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: API поля в запросе и ответе

Сообщение Fait »

Евгений писал(а): 06 дек 2024, 12:33
Fait писал(а): 04 дек 2024, 13:50 Вышло простой - писать собственный API для обработки их запросов)
Так и сделал. Написал простейший API обертку, принимает запросы в том виде как мне нужно, берет данные напрямую из базы, и выдаёт только то что нужно видеть сторонней системе. Но было бы удобнее, если возможность использовать кастомный API была бы прямо из коробки. Попробую оформить этот сервис в виде плагина.
Будет очень круто, если получится!
Ответить