nyse
V2EX  ›  问与答

[API 设计] 大家在设计 API 的时候,获取单条信息是直接返回条目主体还是包在 response.data 里?

  •  
  •   nyse · Oct 23, 2018 · 2193 views
    This topic created in 2797 days ago, the information mentioned may be changed or developed.
    GET api/v1/resource/1
    

    返回示例 1:

    {
        status: "success",
        data: {...item_body...}
    }
    

    返回示例 2:

    {
        ...item_body...
    }
    

    以上两种哪一种比较好?

    第一种比较方便前端判断状态,但由于有 HTTP Status Code 来表示状态,这样做似乎又是多余的。

    说说你们喜欢哪种,以及对接过的其他平台的 API 有哪种比较多。

    13 replies    2018-10-23 18:34:35 +08:00
    qiayue
        1
    qiayue  
    PRO
       Oct 23, 2018
    虽然很多人通过各种分析说有 HTTP Status Code 就足够了,但是,实际使用中还是第一种更方便
    KyonLi
        2
    KyonLi  
       Oct 23, 2018
    knightlhs
        3
    knightlhs  
       Oct 23, 2018
    只有 HTTP Status Code 是不够的 因为还需要业务代码
    另外国内各种奇葩网络环境 会在 非 200 有各种诡异的情况 投毒 注入等 需要考虑异常情况(不考虑 ssl )
    whypool
        4
    whypool  
       Oct 23, 2018
    {
    code:123,
    message:'ok',
    data:...
    }
    LINAICAI
        5
    LINAICAI  
       Oct 23, 2018
    写成 2 的话,客户端会打你喔
    xiaolanglang
        6
    xiaolanglang  
       Oct 23, 2018
    我用 2,如果出了问题
    http code 就不为 200,
    再显示一个结构是
    {
    "code": 1,
    "message":""
    }
    的响应出来,这样终端那边很多情况只需要注册一个全局的异常处理就可以了(弹提示)
    huaizhouYu
        7
    huaizhouYu  
       Oct 23, 2018
    毫无疑问是 1
    limuyan44
        8
    limuyan44  
       Oct 23, 2018 via Android
    http 状态码来判断业务本来就是不对的,这个只能代表 http 请求响应状态又不能代表业务处理状态。不然密码输错给前端反个 500 试试,不砍死你。都是 rest 害得。
    nyse
        9
    nyse  
    OP
       Oct 23, 2018
    @limuyan44 #8 密码输错返回 401 啊
    nyse
        10
    nyse  
    OP
       Oct 23, 2018
    没想到 V2 这么多人不支持 RESTful,一片都倒向第一种。
    jx99
        11
    jx99  
       Oct 23, 2018
    喜欢用 1,上级大佬让用 2
    xiaolanger
        12
    xiaolanger  
       Oct 23, 2018
    业务代码要单独的,跟 HTTP 状态码不是一回事
    NicholasYX
        13
    NicholasYX  
       Oct 23, 2018 via iPhone
    用一
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2647 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 04:15 · PVG 12:15 · LAX 21:15 · JFK 00:15
    ♥ Do have faith in what you're doing.