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

Web API使用GET请求时如何在查询字符串中传递JSON参数?

GET请求查询字符串参数序列化方案

你之前把整个JSON编码成单个参数的方式是错误的,正确的平铺规则如下:

  • 数组类型参数FundCodes,主流Web框架均支持两种通用序列化格式:
    • 重复键名:多值场景下重复声明同一个参数键,例如FundCodes=0DFOY&FundCodes=ABC12
    • 方括号后缀:部分框架(如PHP、Node.js Express)默认支持的格式,例如FundCodes[]=0DFOY&FundCodes[]=ABC12
  • 简单类型参数FromDate、ToDate直接作为独立键值对拼接即可

按你给出的示例参数,最终拼接后的完整查询字符串为:
FundCodes=0DFOY&FromDate=2021-04-01&ToDate=2021-05-01
后端无需额外修改,大部分框架默认可以直接解析上述格式的参数。

接口设计规范选择

优先选择GET的场景

根据RESTful设计原则,GET本身就是为资源查询场景设计的,只要满足以下条件就优先使用GET:

GET请求属于安全、幂等操作,执行后不会修改服务端资源状态,支持浏览器缓存、CDN加速、直接地址栏调试,优势远大于POST。

  • 参数总长度不超过部署环境的URL长度限制(主流服务端、代理均支持至少2KB的URL长度,你的场景参数量极小完全符合要求)
  • 无敏感参数(GET请求URL会被日志、浏览器历史留存)
  • 无多层嵌套的复杂参数结构
    你当前的场景完全符合上述要求,使用GET是完全合规的方案。

选择POST的场景

如果后续出现以下情况,再考虑切换为POST请求:

  • 参数总长度超过URL限制
  • 包含敏感参数需要避免被日志明文留存
  • 参数存在多层嵌套对象、多维数组等复杂结构,平铺到查询字符串的解析成本过高
  • 部署环境的网关、反向代理禁止GET请求携带请求体(如果你此前考虑过用GET请求体传参)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:45:03