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

AWS API Gateway作为SQS代理时请求内加号被转为空格问题咨询

API Gateway转发JSON到SQS时加号被替换为空格问题解答

问题成因

  • +字符在application/x-www-form-urlencoded格式规范中是空格的标准转义表示。
  • 该问题由API Gateway与SQS服务集成时的编码逻辑不匹配导致:你当前的配置中直接将未编码的JSON请求体映射到SQS的MessageBody参数,而SQS的SendMessage接口会默认对接收的参数执行一次URL解码,JSON中的+会被解码为空格后存入队列。
  • 通过AWS控制台发送消息时,控制台会自动对输入内容做标准URL编码后再调用SQS接口,因此加号可以正常保留。

所需额外配置

你只需要修改API Gateway对应路由的集成请求映射模板即可解决问题,步骤如下:

  1. 进入对应API的集成请求配置页,找到「映射模板」配置模块
  2. 新增Content-Type为application/json的映射模板,模板内容填写如下:
Action=SendMessage&MessageBody=$util.urlEncode($input.body)
  1. 保存模板配置后,重新部署API Gateway到对应阶段即可生效。

修改配置后你可以用原测试curl命令验证:

curl --location --request POST 'https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/yyyy' \
--header 'Content-Type: application/json' \
--data-raw '{"data": "25+2"}'

此时SQS队列收到的消息中将正常保留+字符,消费端读取也不会出现符号丢失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:18:04