API Translations Workflow
1. Обзор workflow
API для получения переводов из базы данных с гибкой фильтрацией по ключу и типу.
| Название | api-translations |
|---|---|
| База данных | PostgreSQL (таблица translations) |
| Методы | 1 webhook-узел с тремя вариантами выборки |
2. GET /translations/get
Получение переводов с возможностью фильтрации по ключу и/или типу.
Цепочка выполнения:
-
Webhook (translations/get)
Принимает POST-запрос с параметрами:
query.key- ключ перевода (опциональный)query.type- тип перевода (опциональный)
-
Edit Fields1
Извлекает параметры из запроса:
query.key = $json.query.key query.type = $json.query.type -
Code
Анализирует входные параметры и определяет тип запроса:
Логика работы:
# Перебираем входные данные for item in _input.all(): # Проверяем наличие параметров внутри item['json']['query'] query = item['json']['query'] if 'key' in query and query['key'] is not None and 'type' in query and query['type'] is not None: # Если оба параметра заданы и имеют значения item['json']['switch'] = 2 elif 'key' in query and query['key'] is not None: # Если только key задан item['json']['switch'] = 1 elif 'type' in query and query['type'] is not None: # Если только type задан item['json']['switch'] = 3 else: # Если key и type отсутствуют или их значения равны null item['json']['switch'] = 0Результат - добавление поля
switchс числовым значением:- 0 - нет параметров
- 1 - только key
- 2 - key и type
- 3 - только type
-
Switch
Направляет выполнение по одной из трех веток в зависимости от значения switch:
- switch == 1: выборка по ключу
- switch == 2: выборка по ключу и типу
- switch == 3: выборка по типу
-
Ветка 1 (switch == 1 - только key):
-
Postgres
Выполняет запрос поиска по ключу:
SELECT "key", "ru" FROM translations WHERE "key" = $1;Параметр:
{{ $json.query.key }} -
Respond to ai/get
Возвращает найденные переводы в формате:
[ { "key": "welcome_message", "ru": "Добро пожаловать" } ]
-
Postgres
-
Ветка 2 (switch == 2 - key и type):
-
Postgres1
Выполняет запрос поиска по ключу и типу:
SELECT "key", "ru" FROM translations WHERE "key" = $1 AND "type" = $2;Параметры:
{{ $json.query.key }}, {{ $json.query.type }} -
Respond to ai/get
Возвращает найденные переводы.
-
Postgres1
-
Ветка 3 (switch == 3 - только type):
-
Postgres2
Выполняет запрос поиска по типу:
SELECT "key", "ru" FROM translations WHERE "type" = $1;Параметр:
{{ $json.query.type }} -
Respond to ai/get
Возвращает все переводы указанного типа.
-
Postgres2
Примеры запросов и ответов:
1. Запрос с ключом:
POST /translations/get
{
"query": {
"key": "welcome_message"
}
}
Ответ:
[
{
"key": "welcome_message",
"ru": "Добро пожаловать"
}
]
2. Запрос с ключом и типом:
POST /translations/get
{
"query": {
"key": "button",
"type": "ui"
}
}
Ответ:
[
{
"key": "button.save",
"ru": "Сохранить"
},
{
"key": "button.cancel",
"ru": "Отмена"
}
]
3. Запрос только с типом:
POST /translations/get
{
"query": {
"type": "email"
}
}
Ответ:
[
{
"key": "email.subject.welcome",
"ru": "Добро пожаловать в нашу систему"
},
{
"key": "email.subject.reset_password",
"ru": "Сброс пароля"
}
]