Язык сценариев Lua: изменение тела ответа в шлюзе API

#lua #httpresponse #krakend

Вопрос:

Я хотел бы изменить тело ответа, возвращаемое серверной частью.

В качестве фона я подробно расскажу о своей конкретной проблеме (но мне не требуется решение конкретной проблемы, просто метод управления телом ответа). Я хочу вставить/добавить пару значений ключа в тело ответа на основе кода состояния ответа, и я хочу преобразовать ключи snake_case в ключи camelCase.

Например, учитывая ответ с

 status code: 401
body: {'detail_message': 'user is not logged in'}
 

Я хочу преобразовать его в ответ с

 status code: 401
body: {'success': False, 'detailMessage': 'user is not logged in'}
 

Правило успеха будет Верным для всего, что ниже 400, и Ложным для всего, что выше или равно.

Сценарии Lua можно использовать в моем API-шлюзе, который называется Krakend https://www.krakend.io/docs/endpoints/lua/

Документация содержит только примеры для печати текста ответа и изменения заголовков, но не для изменения текста ответа.

У меня нет опыта работы с Lua, и он нужен мне только для одной задачи. Я не смог найти в Интернете пример манипуляции с телом реакции, с которым я мог бы поиграть.

Какие методы мне нужны, чтобы добавить пару значений ключа в тело ответа и манипулировать ключами в теле ответа?

Комментарии:

1. Я совсем не знаком с Кракендом, но: Вы смотрели на data поле/метод ответа? Поскольку документация кажется немного скудной, вы можете начать с выяснения того, что представляет собой каждое из «полей» ( print(type(r.data)) что должно дать вам либо function или table ), а затем перейти оттуда. Вы также можете попробовать API отладки (если он доступен), чтобы получить еще больше информации. Если data это таблица, попробуйте просмотреть ее содержимое ( for k, v in pairs(r.data) do print k, v end . Если он содержит ваши данные, попробуйте что-нибудь заменить и т. Д

2. (Добавил это в качестве комментария, так как я не уверен, что это вообще полезно, люди, знакомые с krakend, безусловно, могут предложить больше и лучше понять)