首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python实现AWS lambda get http方法

用Python实现AWS lambda get http方法
EN

Stack Overflow用户
提问于 2021-02-24 16:05:32
回答 2查看 787关注 0票数 0

我很难获得通过api网关调用aws lambda时使用的http方法。我在api网关中创建了一个REST api,它调用一个lambda函数。在lambda函数中,我希望有两个函数,一个用于POST请求,另一个用于GET请求。我无法从事件中获取方法。在其他线程中,答案通常只针对javascript或java。

我从我的终端运行以下curl命令:curl "https://myurl/endpoint"我还尝试通过高级rest客户端发送GET请求。

这是我想要做的:

代码语言:javascript
运行
复制
def lambda_handler(event, context):

method = event['httpMethod']
if method == "GET":
    return get_function()
if method == "POST":
    return post_function()

运行上面的代码会产生一个keyError。我也尝试过这个:

代码语言:javascript
运行
复制
method = event['requestContext']['http']['method']

我试着像这样打印出事件本身的method = event。无论是在响应中还是在cloudwatch中,我得到的都是{}

如何读取请求中的http方法

EN

回答 2

Stack Overflow用户

发布于 2021-02-25 05:50:35

下面的代码应该可以在Python 3.7运行时运行。当然,你可以改进代码,但它会给你你想要的东西。

代码语言:javascript
运行
复制
    reqcontxt = event.get("requestContext")
    httpprtcl = reqcontxt.get("http")
    methodname = httpprtcl.get("method")
    print('### http method name ###' + str(methodname))

谢谢。

海伦

票数 0
EN

Stack Overflow用户

发布于 2021-02-25 09:29:17

在@Marcin的帮助下,我明白了我必须在集成请求中勾选“Use Lambda Proxy integration”选项。如果没有它,我的请求就不会向lambda传递任何方法或头数据。要么就是这样,要么我需要在我的应用程序中添加更多代码来定义该方法,但是由于我使用curl进行测试,所以我没有在请求中添加-X GET或任何类似的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66346876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档