У меня есть 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?