我在通过API网关调用aws lambda时遇到了困难。我在api网关中创建了一个REST api,它调用了一个lambda函数。在lambda函数中,我希望有两个函数,一个用于POST请求,一个用于GET请求。我无法从事件中获得方法。在其他线程中,答案通常只针对javascript或java。
我从终端运行以下curl命令:curl "https://myurl/endpoint"
我还尝试通过高级REST客户端发送GET请求。
这是我想做的:
def lambda_handler(event, context):
method = event['httpMethod']
if method == "GET":
return get_function()
if method == "POST":
return post_function()
运行上面的代码会得到一个keyError
,我也试过这样做:
method = event['requestContext']['http']['method']
我试着像method = event
这样打印出事件本身,我从中得到的都是{}
,无论是在响应中还是在cloudwatch中。
如何读取请求中的http方法
3条答案
按热度按时间u1ehiz5o1#
下面的代码应该可以在Python 3.7运行时运行。当然,你可以改进代码,但是,它会给你你想要的。
谢谢。
平连
u59ebvdq2#
在@Marcin的帮助下,我明白了我必须在集成请求中勾选“Use Lambda Proxy Integration”选项。没有它,我的请求不会将任何方法或头数据传递给lambda。要么这样,要么我需要在我的应用程序中添加一些代码来定义方法,但由于我使用curl进行测试,我没有在请求中添加-X GET或类似的内容。
yzuktlbb3#
使用
event.get("httpMethod")