Как изменить код состояния в бессерверном приложении flask - PullRequest
0 голосов
/ 19 июня 2020

У меня есть api отдыха, развернутый с использованием бессерверного, apigateway (с использованием интеграции лямбда-прокси) и лямбда-функции. Я пытаюсь вернуть собственный код состояния из лямбды. В соответствии с документацией AWS и этого ответа отправки такого диктата

{
  "isBase64Encoded" : "boolean",
  "statusCode": "number",
  "headers": { ... },
  "body": "JSON string"
}

должно быть достаточно, чтобы apigateway распознал это и использовал statusCode как фактический код состояния, а не просто отправка 200. Я думаю, что это нормально, когда у вас есть прямой доступ к обработчику лямбда, но в бессерверном + Flask вы не получаете доступа для изменения основного обработчика (он живет в файле wsgi_handler.py, созданном безсерверным способом). Это означает, что каждый раз, когда я возвращаю dict, подобный приведенному выше, в моем приложении flask, он отображается как строка, а не шлюз api, распознаваемый как тип ответа. До сих пор я нашел способ изменить код состояния, вернув его в моем приложении flask в качестве второго аргумента для возврата:

@app.route('/update', methods=['PUT', 'DELETE'])
def update():
    return "this is not found", 404

Это элемент flask или wsgi что заставляет это работать? Как правильно отправить пользовательский код состояния обратно из приложения flask в apigateway?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...