我有一个使用serverless、apigateway(使用lambda代理集成)和lambda函数部署的rest api,我试图从lambda中返回一个自定义状态代码。根据 AWS文档和 本回答 发回口述
{
"isBase64Encoded" : "boolean",
"statusCode": "number",
"headers": { ... },
"body": "JSON string"
}
应该足以让apigateway识别这一点,并使用该statusCode作为实际的状态码,而不是只发送200。我认为当你可以直接访问lambda处理程序时,这是很好的,但是在serverless + Flask中,你不能访问修改主处理程序(它位于serverless生成的wsgi_handler.py中)。这使得每次我在我的flask应用中返回一个像上面这样的dict时,它都会被渲染成一个字符串,而不是api网关识别为响应类型。我目前发现的修改状态码的方法是在我的flask应用中把它作为返回的第二个参数返回。
@app.route('/update', methods=['PUT', 'DELETE'])
def update():
return "this is not found", 404
这是flask的问题,还是wsgi的问题?从flask应用向apigateway发送自定义状态码的正确方法是什么?