Примеры настроек REST API
Чтобы ознакомиться с примерами настроек REST API, скачайте пакет [SOC] - Scripted REST API и импортируйте его на свой экземпляр.
Пример 1. Получение значения системного свойства без авторизации
Для проверки примера:
- Перейдите на главную страницу экземпляра.
- Добавьте в адресную строку: /v1/api/c_simple/api_module_path/api_action_path?param_1=value_1.
- Скопируйте полученное значение адреса.
- Перейдите по полученному адресу в режиме инкогнито.
В результате вы получите ответ на действие API /record/sys_api_action/164054047017513732 со значением системного свойства simple.auth_page.support_phone.
Пример 2. Создание записи задачи с вложением
Для проверки примера:
- Перейдите на запись /record/sys_script/164053985417710860.
- Нажмите Запустить, чтобы запустить скрипт.
В результате вы получите ответ на действие API /record/sys_api_action/161831494014244852.
Внизу формы скрипта будет указана ссылка на созданную запись Задачи:
К созданной записи Задачи будет прикреплено 2 вложения – base64 файлы, переданные на 14 и 15 строках скрипта:
Пример 3. Cоздание вложений
Вы можете создавать вложения при помощи настроек REST API. Файлы передаются в формате base64. Для получения файлов в этом формате используйте метод readBase64(attachmentId).
Чтобы создать вложение при помощи настроек REST API:
-
Создайте действие 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 => {
reatedAttachmentIds.push(simpleAttach.writeBase64(RECORD_DOC_ID, ...attachments[attachment]));
});
response.setBody(createdAttachmentIds);
}) (SimpleApiRequest, SimpleApiResponse) -
Cоздайте скрипт для отправки запросов.
Пример скрипта для отправки POST-запроса
const API_ACTION_URL = ''; // https://docs.simpleone.ru/display/SAPI/Configuring+Scripted+REST+API#ConfiguringScriptedRESTAPI-ScriptedRESTAPIURIs
const payloadRequest = sws.restRequestV1();
payloadRequest.setRequestUrl(API_ACTION_URL);
payloadRequest.setRequestMethod('POST');
payloadRequest.setRequestHeader('Content-type', 'application/json');
const payload = {
table_id: '155931135900000084', // user table ID
record_id: '155931135900000001', // admin record ID
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 article.
Особенности работы и рекомендации
- Скрипт действия API выполняется без учета правил контроля доступа (ACL).
- Авторизация запросов к Scripted REST API невозможна через базовую авторизацию Basic Auth. Для авторизации используйте решение, описанное в разделе Авторизация.
- Если в ответе на действие API содержится ключ error со значением Undefined index: SimpleApiResponse – в скрипте действия API допущена ошибка. Перейдите в список исключений через навигатор в Системный журнал → Журнал исключений и изучите первые записи.
- Приведите данные, передаваемые JSON, к типу String при помощи метода JSON.stringify(), чтобы избежать искажения данных:
5. Если скрипт действия API выполняется дольше допустимого времени ожидания, вынесите часть скрипта в Скрипты действий для событий (sys_event_script_action) и вызовите системное событие из скрипта действия API.