V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xrzxrzxrz
V2EX  ›  问与答

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

  •  
  •   xrzxrzxrz · 2022-10-09 15:20:59 +08:00 · 2037 次点击
    这是一个创建于 778 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天在看某厂的 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 是方便请求在网关层就可以做一些与业务无关的处理?
    14 条回复    2022-10-09 20:15:38 +08:00
    awanabe
        1
    awanabe  
       2022-10-09 15:22:29 +08:00   ❤️ 1
    url params 放非业务的数据
    body 里面 放业务数据
    Pastsong
        2
    Pastsong  
       2022-10-09 15:22:45 +08:00
    没有好处,作为 Restful 接口应该避免这种设计
    iold
        3
    iold  
       2022-10-09 15:24:44 +08:00 via iPhone
    别的不知道,微信支付就是这样 API 设计,变量命名风格也不一样。
    dzdh
        4
    dzdh  
       2022-10-09 15:25:14 +08:00
    支付宝各类接口:
    dzdh
        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
    gam2046
        6
    gam2046  
       2022-10-09 15:29:56 +08:00
    一种可能是为了脱敏,request url 可能会被各种中间件记录下来,而 request body 通常不会。
    nekoneko
        7
    nekoneko  
       2022-10-09 15:45:51 +08:00
    body 是只能读一次的流, 中间服务想用的话读完还得塞回去, 放在 url 里面就不用这样麻烦了.
    renmu123
        8
    renmu123  
       2022-10-09 16:07:08 +08:00
    可能是好几个程序员改过这个代码
    pupboss
        9
    pupboss  
       2022-10-09 16:12:04 +08:00
    没什么好处,get query parameter 原则上应该放在请求头
    xrzxrzxrz
        10
    xrzxrzxrz  
    OP
       2022-10-09 17:19:23 +08:00
    @nekoneko 感觉有道理哦,看 params 的字段,都是那些跟业务的关联性比较弱的字段
    xxxbin
        11
    xxxbin  
       2022-10-09 18:05:56 +08:00   ❤️ 1
    有个可能没人说,类似 nginx 的日志,分析时有用
    sadfQED2
        12
    sadfQED2  
       2022-10-09 19:24:45 +08:00 via Android
    @renmu123 哈哈哈,确实是这样。以前接手别人的代码,body 里面一大堆不知道干什么也不知道怎么解析的数据。于是我就把新加参数放 url 里面了
    IvanLi127
        13
    IvanLi127  
       2022-10-09 19:27:48 +08:00 via Android
    好处是可以偷懒。(迫真
    adoal
        14
    adoal  
       2022-10-09 20:15:38 +08:00
    没道理,瞎搞。要么原始设计的人烂,要么改版重构的人更烂。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   996 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:20 · PVG 05:20 · LAX 13:20 · JFK 16:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.