xrzxrzxrz
V2EX  ›  问与答

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

  •  
  •   xrzxrzxrz · Oct 9, 2022 · 3095 views
    This topic created in 1496 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
    awanabe
    Oct 9, 2022❤️1
    1
    url params 放非业务的数据
    body 里面 放业务数据
    Pastsong
    Pastsong
    Oct 9, 2022
    2
    没有好处,作为 Restful 接口应该避免这种设计
    iold
    iold
    Oct 9, 2022 via iPhone
    3
    别的不知道,微信支付就是这样 API 设计,变量命名风格也不一样。
    dzdh
    dzdh
    Oct 9, 2022
    4
    支付宝各类接口:
    dzdh
    dzdh
    Oct 9, 2022
    5
    接上
    支付宝各类接口:

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