接口使用 POST 方法,但是参数既放在 url 又用了 body json,意义是什么?

2022-10-09 15:20:59 +08:00
 xrzxrzxrz

这两天在看某厂的 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. 用 url params 是方便请求在网关层就可以做一些与业务无关的处理?
2042 次点击
所在节点    问与答
14 条回复
awanabe
2022-10-09 15:22:29 +08:00
url params 放非业务的数据
body 里面 放业务数据
Pastsong
2022-10-09 15:22:45 +08:00
没有好处,作为 Restful 接口应该避免这种设计
iold
2022-10-09 15:24:44 +08:00
别的不知道,微信支付就是这样 API 设计,变量命名风格也不一样。
dzdh
2022-10-09 15:25:14 +08:00
支付宝各类接口:
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
gam2046
2022-10-09 15:29:56 +08:00
一种可能是为了脱敏,request url 可能会被各种中间件记录下来,而 request body 通常不会。
nekoneko
2022-10-09 15:45:51 +08:00
body 是只能读一次的流, 中间服务想用的话读完还得塞回去, 放在 url 里面就不用这样麻烦了.
renmu123
2022-10-09 16:07:08 +08:00
可能是好几个程序员改过这个代码
pupboss
2022-10-09 16:12:04 +08:00
没什么好处,get query parameter 原则上应该放在请求头
xrzxrzxrz
2022-10-09 17:19:23 +08:00
@nekoneko 感觉有道理哦,看 params 的字段,都是那些跟业务的关联性比较弱的字段
xxxbin
2022-10-09 18:05:56 +08:00
有个可能没人说,类似 nginx 的日志,分析时有用
sadfQED2
2022-10-09 19:24:45 +08:00
@renmu123 哈哈哈,确实是这样。以前接手别人的代码,body 里面一大堆不知道干什么也不知道怎么解析的数据。于是我就把新加参数放 url 里面了
IvanLi127
2022-10-09 19:27:48 +08:00
好处是可以偷懒。(迫真
adoal
2022-10-09 20:15:38 +08:00
没道理,瞎搞。要么原始设计的人烂,要么改版重构的人更烂。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/885537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX