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

如何将API网关POST请求的表单编码数据转为JSON直接发送至Step Functions

直接将API网关接收的application/x-www-form-urlencoded数据转为JSON并发送到Step Functions

不需要通过Lambda预处理,你可以直接在API网关的集成配置里完成格式转换,具体步骤如下:

1. 配置API网关POST方法的集成请求

  1. 进入API网关控制台,找到目标POST方法,切换到集成请求标签页
  2. 集成类型选择AWS服务,选中Step Functions,填写对应区域和目标状态机ARN
  3. 开启映射模板:
    • 点击添加映射模板,输入application/x-www-form-urlencoded作为内容类型,可勾选当没有匹配的模板时使用默认模板
    • 在模板编辑框中输入以下VTL(Velocity模板语言)代码,实现表单数据到JSON的转换:
      #set($formData = $input.path('$'))
      {
        #foreach($key in $formData.keySet())
          "$key": "$util.escapeJavaScript($formData.get($key))"#if($foreach.hasNext),#end
        #end
      }
      
    • 这段代码会遍历所有表单键值对生成标准JSON,util.escapeJavaScript用来处理单引号、双引号等特殊字符,避免JSON语法错误

2. 配置权限(关键步骤)

确保API网关拥有调用Step Functions状态机的权限:

  • 找到API网关对应的IAM角色(无则创建)
  • 给该角色添加权限策略,允许states:StartExecution操作并指定目标状态机ARN,示例策略如下:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "states:StartExecution",
          "Resource": "arn:aws:states:你的区域:你的账号ID:stateMachine:你的状态机名称"
        }
      ]
    }
    

3. 测试验证

用POST工具(如Postman、curl)发送请求:

  • 请求头设置Content-Type: application/x-www-form-urlencoded
  • 请求体填写类似username=john&email=john@example.com的键值对
  • 查看Step Functions的执行输入,会看到已转为格式化后的JSON对象:{"username":"john","email":"john@example.com"}

注意事项

  • 若表单包含数组类型参数(如hobby=reading&hobby=hiking),默认会转为数组,可调整模板适配:
    #set($formData = $input.path('$'))
    {
      #foreach($key in $formData.keySet())
        "$key": #if($formData.get($key).size() > 1) [
          #foreach($value in $formData.get($key))
            "$util.escapeJavaScript($value)"#if($foreach.hasNext),#end
          #end
        ] #else
          "$util.escapeJavaScript($formData.get($key))"
        #end#if($foreach.hasNext),#end
      #end
    }
    
  • 集成请求的内容处理可根据需求选择Passthrough或Convert to JSON

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:15