HTTP-запросы
Чтобы ваши HTTP-запросы в проекте были легко изменяемыми и масштабируемыми, следуйте лучшим практикам.
Лучшие практики
NocoDB URL
Храните URL NocoDB в глобальной переменной на случай, если вы поменяете адрес вашего сервера.
Где взять URL?
→ Откройте Swagger.
→ Откройте любой первый GET-запрос.
→ Нажмите “Try it out”.
→ Нажмите “Execute”.
→ Скопируйте блоки “Выполнить SmartQuery” и “Отправить HTTP-запрос” с обработкой ошибки.
URL будет находиться чуть ниже “Execute” в поле “Request URL”.



Скопируйте все до …tables/.

Создайте глобальную переменную и вставьте туда этот адрес.

Идентификаторы таблиц
Храните идентификаторы таблиц в глобальной переменной типа словарь на случай, если добавятся/изменятся/удалятся таблицы в NocoDB.
Где взять идентификаторы таблиц?
Откройте Swagger.
Каждая ваша таблица содержит одну группу запросов.

Идентификаторы таблиц видны сразу же.

Чтобы скопировать идентификатор, выполните любой тестовый запрос.
Из поля “Request URL” вы можете выделить и скопировать идентификатор.

Создайте глобальную переменную с типом словарь, где ключ — название таблицы, значение — идентификатор.

Токен NocoDB
Храните токен NocoDB в глобальной переменной.

Заготовка из блоков
Используйте специальную заготовку из блоков “Выполнить SmartQuery” и “Отправить HTTP-запрос”, а также блоков с обработкой ошибок.

В блоке “Отправить HTTP-запрос” в поле URL введите %url%.
В заголовках укажите:
accept = application/json
xc-token = %NOCODB_TOKEN%
content-type = application/json

Ответ сохраняйте в переменную с типом “Словарь”.
Статус ответа сохраняйте в переменную типа “Число”.
Заголовки ответа можно не сохранять.
Если GET-запрос — пустое тело запроса “Форма”.

Если POST/PATCH/DELETE — тело запроса “Текст”:

Если вы хотите всегда быть в курсе обо всех происшествиях с запросами, то:
→ Создайте блок “Webhook”.

→ Создайте блоки “Выполнить SmartQuery” и “Выполнить HTTP-запрос”.
→ Добавьте следующий код в блок “Выполнить SmartQuery”:

→ Скопируйте URL вебхука.
→ Вставьте его в URL в блоке “Отправить HTTP-запрос”.
→ Поменяйте метод на POST.
→ Тело запроса выберите “Текст”:

→ В заголовках передайте:
content-type = application/json

Сохранять ответ, статус и заголовки необязательно.
→ Переместите блоки к заготовке
→ Проведите стрелку от выхода по ошибке блока “Выполнить SmartQuery” заготовки.

→ Откройте блок ”Выполнить SmartQuery”, от которого выходит стрелка по ошибке.

→ Нажмите на адресную строку вашего браузера и скопируйте URL целиком.

→ Откройте блок “SmartQuery”, на который ведет стрелка по ошибке
→ В ключ “block” словаря %alert% вставьте скопированный URL
→ Замените значение “peerid” словаря %reqbody% на ваш id (или id админа)


→ Проведите стрелку от ошибки блока “Отправить HTTP-запрос”.

→ Создайте блок “Условие” с условием:
→ Проведите к нему стрелку от блока “Отправить HTTP-запрос”.

→ Сделайте дубликат из двух блоков “Выполнить SmartQuery” и “Отправить HTTP-запрос”, которые идут от стрелок с ошибками.

→ В блоке “Выполнить SmartQuery” замените “message” в %alert% на:
→ Здесь же, добавьте ниже строчку:

→ Вставьте блоки рядом с “Иначе” и соедините:

→ Создайте блок “Отправить сообщение” и соедините с блоком “Webhook”.
→ Введите следующий текст сообщения:

Такую заготовку можно смело копировать, и настраивать под конкретные нужды.

При копировании блоков их URL меняется.
Поэтому, в скопированных блоках нужно внести некоторые небольшие изменения, чтобы ошибка указывала на действительный блок.
Нужно снова выбрать блок, на который будет ссылаться ошибка, скопировать адрес из адресной строки и заменить “block” в %alert% в обоих цепочках с ошибками.

Цепочка с вебхуком должна быть одна на весь проект. Можете поместить ее в отдельный сценарий.

Преимущества
Плюсы от внедрения в проект лучших практик:
— Если у вас поменяется токен, не придется менять его во всех блоках, достаточно будет изменить глобальную переменную.
— Если у вас добавится/удалится таблица, достаточно будет добавить/удалить ее идентификатор в глобальной переменной.
— Если вы поменяете URL NocoDB (смените сервер или облако), достаточно поменять URL в одном месте.
— Минимум затрат времени на настройку очередного запроса к NocoDB.
— Вы сможете быстро реагировать на сбои и неполадки при работе бота, связанные с запросами в NocoDB.
Last updated