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

如何为嵌套结构的REST API构建POST请求的URL参数?

如何给嵌套结构的POST API构造参数

嘿,我来帮你理清楚这个问题~首先得明确一个关键点:你的API是POST类型,而且参数是复杂的嵌套JSON结构,最规范的做法是把参数放在请求体(Request Body)里,而不是拼在URL的查询字符串中。不过我会同时告诉你两种方式的实现方法:


一、标准POST传参方式(推荐)

对于嵌套JSON参数的POST接口,直接把你的JSON放在请求体里发送就可以了,不需要在URL里加问号和等号。比如用curl工具调用的示例:

curl -X POST http://localhost:63020/api/search \
  -H "Content-Type: application/json" \
  -d '{
 "offset": 0,
 "batchsize": 10,
 "search": {
 "scope": [2,3,32],
 "type": "basic",
 "text": {
 "value": "test*",
 "fields": [ "subject", "body" ]
 },
 "age": {
 "unit": "d",
 "amount": 365
 },
 "hasattachments": false
 },
 "facet": "messagehits"
}'

其他工具(比如Postman、Python的requests库)也都是类似的逻辑:设置请求方法为POST,Content-Type为application/json,然后把JSON作为请求体内容发送。


二、如果非要把嵌套参数放到URL查询字符串中

虽然不推荐复杂嵌套参数这么做,但如果有特殊需求,你可以用点符号或者方括号来表示嵌套层级,数组则通过重复参数名或者加空方括号来传递:

方式1:点分隔嵌套层级

这种格式在很多后端框架(比如Spring Boot)中都能被正确解析:

http://localhost:63020/api/search?offset=0&batchsize=10&search.scope=2&search.scope=3&search.scope=32&search.type=basic&search.text.value=test*&search.text.fields=subject&search.text.fields=body&search.age.unit=d&search.age.amount=365&search.hasattachments=false&facet=messagehits

方式2:方括号表示嵌套/数组

这种格式在Node.js的Express等框架中比较常见:

http://localhost:63020/api/search?offset=0&batchsize=10&search[scope][]=2&search[scope][]=3&search[scope][]=32&search[type]=basic&search[text][value]=test*&search[text][fields][]=subject&search[text][fields][]=body&search[age][unit]=d&search[age][amount]=365&search[hasattachments]=false&facet=messagehits

⚠️ 注意:这两种格式是否能被你的API正确识别,完全取决于后端的参数解析规则,所以最好先对照API文档测试一下哪种格式可行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:06:50