这两天在看某厂的 API ,发现 API 的用的 POST ,但是传参的时候,既用了 url params 又用了 json body ,想想问问这么做的用处(好处)是什么?
如下:
curl -X POST
http://tracking.e.qq.com/conv?cb=YWRzX3NlcnZpY2UsMTU4NDUxMDI3OSwyNjg5MzNhMzc5MTM0YzBjMDQ4ZGZjMGQyNGYzMTk0NWYzMzJiOWNi&conv_id=10001
-H 'Content-Type: application/json'
-H 'cache-control: no-cache'
-d '{
"actions":[
{
"outer_action_id":"outer_action_identity",
"action_time":1492998081,
"action_type":"ACTIVATE_APP"
}
]
}'
盲猜:
1
awanabe 2022-10-09 15:22:29 +08:00 1
url params 放非业务的数据
body 里面 放业务数据 |
2
Pastsong 2022-10-09 15:22:45 +08:00
没有好处,作为 Restful 接口应该避免这种设计
|
3
iold 2022-10-09 15:24:44 +08:00 via iPhone
别的不知道,微信支付就是这样 API 设计,变量命名风格也不一样。
|
4
dzdh 2022-10-09 15:25:14 +08:00
支付宝各类接口:
|
5
dzdh 2022-10-09 15:27:46 +08:00
接上
支付宝各类接口: post xxxx.com/gateway.do?_input_charset=utf8 body: method=xx&version=xx&biz_content=json( method 需要的 kv 数据 )&sign=前面所有数据按 k ascii 升序 拼成 string 进行 rsa |
6
gam2046 2022-10-09 15:29:56 +08:00
一种可能是为了脱敏,request url 可能会被各种中间件记录下来,而 request body 通常不会。
|
7
nekoneko 2022-10-09 15:45:51 +08:00
body 是只能读一次的流, 中间服务想用的话读完还得塞回去, 放在 url 里面就不用这样麻烦了.
|
8
renmu123 2022-10-09 16:07:08 +08:00
可能是好几个程序员改过这个代码
|
9
pupboss 2022-10-09 16:12:04 +08:00
没什么好处,get query parameter 原则上应该放在请求头
|
11
xxxbin 2022-10-09 18:05:56 +08:00 1
有个可能没人说,类似 nginx 的日志,分析时有用
|
12
sadfQED2 2022-10-09 19:24:45 +08:00 via Android
@renmu123 哈哈哈,确实是这样。以前接手别人的代码,body 里面一大堆不知道干什么也不知道怎么解析的数据。于是我就把新加参数放 url 里面了
|
13
IvanLi127 2022-10-09 19:27:48 +08:00 via Android
好处是可以偷懒。(迫真
|
14
adoal 2022-10-09 20:15:38 +08:00
没道理,瞎搞。要么原始设计的人烂,要么改版重构的人更烂。
|