Чтобы ознакомиться с примерами настроек REST API, скачайте пакет [SOC] - Scripted REST API и импортируйте его на свой экземпляр.

Пример 1. Получение значения системного свойства без авторизации


Для проверки примера

  1. Перейдите на главную страницу экземпляра.
  2. Добавьте в адресную строку: /v1/api/c_simple/api_module_path/api_action_path?param_1=value_1.
  3. Скопируйте полученное значение адреса.
  4. Перейдите по полученному адресу в режиме инкогнито.

В результате вы получите ответ на действие API /record/sys_api_action/164054047017513732 со значением системного свойства simple.auth_page.support_phone

Пример 2. Создание записи задачи с вложением


Для проверки примера:

  1. Перейдите на запись /record/sys_script/164053985417710860.
  2. Нажмите Запустить, чтобы запустить скрипт.

В результате вы получите ответ на действие API /record/sys_api_action/161831494014244852.

Внизу формы скрипта будет указана ссылка на созданную запись Задачи:

К созданной записи Задачи будет прикреплено 2 вложения – base64 файлы, переданные на 14 и 15 строках скрипта:

 

Пример 3. Cоздание вложений


Вы можете создавать вложения при помощи настроек REST API. Файлы передаются в формате base64. Для получения файлов в этом формате используйте метод readBase64(attachmentId)

Чтобы создать вложение при помощи настроек REST API:

  1. Создайте действие API для обработки POST-запросов с содержимым вложений.

    Пример скрипта для действия API
    (function (request, response) {
      const data = request.getBody();
      const TABLE_ID = data.table_id;
      const RECORD_ID = data.record_id;
      const RECORD_DOC_ID = ss.getDocIdByIds(TABLE_ID, RECORD_ID);
      const attachments = data.attachments;
      const simpleAttach = new SimpleAttachment();
      let createdAttachmentIds = [];
      Object.keys(attachments).forEach(attachment => {
        createdAttachmentIds.push(simpleAttach.writeBase64(RECORD_DOC_ID, ...attachments[attachment]));
      });
      response.setBody(createdAttachmentIds);
    
    }) (SimpleApiRequest, SimpleApiResponse)
    
    
  2. Cоздайте скрипт для отправки запросов.

    Пример скрипта для отправки POST-запроса
    const API_ACTION_URL = ''; 
    const payloadRequest = sws.restRequestV1();
    payloadRequest.setRequestUrl(API_ACTION_URL);
    payloadRequest.setRequestMethod('POST');
    payloadRequest.setRequestHeader('Content-type', 'application/json');
    const payload = {
      table_id: '155931135900000084', // ID записи user
      record_id: '155931135900000001', // ID записи admin
     record  attachments: {
        1: ['file_example.gif', 'R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=', 'image/gif']
      }
    }
    
    payloadRequest.setRequestBody(JSON.stringify(payload));
    const response = payloadRequest.execute().getBody();
    print('Response: ' + response);
    

Больше информации о настройках в статье Настройки REST API.

Особенности работы и рекомендации


  1. Скрипт действия API выполняется без учета правил контроля доступа (ACL).
  2. Авторизация запросов к Scripted REST API невозможна через базовую авторизацию Basic Auth. Для авторизации используйте решение, описанное в разделе Авторизация.
  3. Если в ответе на действие API содержится ключ error со значением Undefined index: SimpleApiResponse – в скрипте действия API допущена ошибка. Перейдите в список исключений через навигатор в Системный журнал → Журнал исключений и изучите первые записи.
  4. Приведите данные, передаваемые JSON, к типу String при помощи метода JSON.stringify(), чтобы избежать искажения данных:
     
  5. Если скрипт действия API выполняется дольше допустимого времени ожидания, вынесите часть скрипта в Скрипты действий для событий (sys_event_script_action) и вызывайте системное событие из скрипта действия API.

  • No labels