You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS API Gateway中获取URL路径参数{name}?

问题描述

我正在使用AWS API Gateway,需要接收URL路径中的{name}参数并返回Hello {name},但未能实现预期效果。我的API地址为https://xxxxxx.execute-api.eu-west-1.amazonaws.com/dev/John,当前使用的Python Lambda代码如下,期望输出为返回Hello John,请问哪里出错了?如何从URL中获取{name}参数?

当前Lambda代码:

def lambda_handler(event, context):

    name = event["requestContext"]["resourcePath"]
    response = "Hello " + name
    
    return {
        'statusCode': 200,
        'body': response
    }

期望输出:

{
    "statusCode": 200,
    "body": "Hello John"
}

错误原因

你当前代码从event["requestContext"]["resourcePath"]取值,这个字段返回的是API Gateway中定义的资源路径模板(例如/dev/{name}),而非实际请求URL中的参数值,因此无法获取到John。


解决步骤

1. 正确配置API Gateway路径参数

  • 登录API Gateway控制台,找到目标API的资源层级(你的URL结构是/dev/{name},因此需要在/dev资源下创建子资源/{name})
  • 在子资源的配置中,将路径参数设为{name},确保API Gateway能识别URL中的动态参数
  • 若使用Lambda代理集成(推荐方式),无需额外配置映射;若使用非代理集成,需在「集成请求」中添加映射模板(Content-Type设为application/json),模板内容如下:
    {
      "name": "$input.params('name')"
    }
    

2. 修改Lambda代码获取参数

根据集成方式选择对应代码:

方式1:Lambda代理集成(推荐)

代理集成下,路径参数会自动封装到event["pathParameters"]中,修改代码:

def lambda_handler(event, context):
    # 用get方法避免参数不存在时报错,默认值设为Guest
    name = event.get("pathParameters", {}).get("name", "Guest")
    response = f"Hello {name}"
    
    return {
        'statusCode': 200,
        'body': response
    }

方式2:非代理集成

若使用自定义映射模板,直接从event中读取配置好的参数:

def lambda_handler(event, context):
    name = event.get("name", "Guest")
    response = f"Hello {name}"
    
    return {
        'statusCode': 200,
        'body': response
    }

验证

重新部署API Gateway后,请求https://xxxxxx.execute-api.eu-west-1.amazonaws.com/dev/John,即可得到预期的输出结果。

内容的提问来源于stack exchange,提问作者Andre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 11:30:58