xrzxrzxrz
V2EX  ›  问与答

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

  •  
  •   xrzxrzxrz · Oct 9, 2022 · 2753 views
    This topic created in 1357 days ago, the information mentioned may be changed or developed.

    这两天在看某厂的 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 replies    2022-10-09 20:15:38 +08:00
    awanabe
        1
    awanabe  
       Oct 9, 2022   ❤️ 1
    url params 放非业务的数据
    body 里面 放业务数据
    Pastsong
        2
    Pastsong  
       Oct 9, 2022
    没有好处,作为 Restful 接口应该避免这种设计
    iold
        3
    iold  
       Oct 9, 2022 via iPhone
    别的不知道,微信支付就是这样 API 设计,变量命名风格也不一样。
    dzdh
        4
    dzdh  
       Oct 9, 2022
    支付宝各类接口:
    dzdh
        5
    dzdh  
       Oct 9, 2022
    接上
    支付宝各类接口:

    post xxxx.com/gateway.do?_input_charset=utf8
    body: method=xx&version=xx&biz_content=json( method 需要的 kv 数据 )&sign=前面所有数据按 k ascii 升序 拼成 string 进行 rsa
    ntdll
        6
    ntdll  
       Oct 9, 2022
    一种可能是为了脱敏,request url 可能会被各种中间件记录下来,而 request body 通常不会。
    nekoneko
        7
    nekoneko  
       Oct 9, 2022
    body 是只能读一次的流, 中间服务想用的话读完还得塞回去, 放在 url 里面就不用这样麻烦了.
    renmu123
        8
    renmu123  
       Oct 9, 2022
    可能是好几个程序员改过这个代码
    pupboss
        9
    pupboss  
       Oct 9, 2022
    没什么好处,get query parameter 原则上应该放在请求头
    xrzxrzxrz
        10
    xrzxrzxrz  
    OP
       Oct 9, 2022
    @nekoneko 感觉有道理哦,看 params 的字段,都是那些跟业务的关联性比较弱的字段
    xxxbin
        11
    xxxbin  
       Oct 9, 2022   ❤️ 1
    有个可能没人说,类似 nginx 的日志,分析时有用
    sadfQED2
        12
    sadfQED2  
       Oct 9, 2022 via Android
    @renmu123 哈哈哈,确实是这样。以前接手别人的代码,body 里面一大堆不知道干什么也不知道怎么解析的数据。于是我就把新加参数放 url 里面了
    IvanLi127
        13
    IvanLi127  
       Oct 9, 2022 via Android
    好处是可以偷懒。(迫真
    adoal
        14
    adoal  
       Oct 9, 2022
    没道理,瞎搞。要么原始设计的人烂,要么改版重构的人更烂。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1158 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 17:57 · PVG 01:57 · LAX 10:57 · JFK 13:57
    ♥ Do have faith in what you're doing.