V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
h82258652
V2EX  ›  程序员

采取 RESTful 风格的 api 是否应该对结果包一层?

  •  
  •   h82258652 ·
    h82258652 · 2019-10-21 23:18:13 +08:00 · 25556 次点击
    这是一个创建于 1858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,今天公司的新项目开始对接,app 端的一看我这接口就吐槽我。让我改成如下这种: { "code": 200, "message": "", "data": xxx }

    但我觉得首先这 code 肯定是多余的,可以直接从 http 状态码里面读取。之前也看过 twitter 的 api,也没有说包一层,200 的话那就直接返回 data 了。 公司项目我就忍忍算了,毕竟人家老员工。但后面有自己项目的话,还是想弄标准一点。不知道一般来说,大家是怎样实现?

    305 条回复    2019-10-24 10:47:14 +08:00
    1  2  3  4  
    no1xsyzy
        301
    no1xsyzy  
       2019-10-23 19:04:50 +08:00
    @icris #293 生态系统割裂啊,fetch 是只要有(完整?)数据回来,就是走 then 的,只有连 status code 都没有才是 catch。
    gscoder
        302
    gscoder  
       2019-10-23 20:26:50 +08:00
    需要,http 的几个状态码完全满足不了稍微复杂的业务。。我们只是业务状态码就从 1001 排到了 9999
    Woood
        303
    Woood  
       2019-10-23 20:30:58 +08:00
    @markgor 最后那句除了百度和 360 还要包括腾讯
    markgor
        304
    markgor  
       2019-10-24 08:51:16 +08:00
    @Woood 騰訊我不好說,畢竟吃人嘴軟拿人手短;反正我也不接觸騰訊遊戲,就微信和 QQ 這兩方面,我覺得還算好吧。唯一貢獻給騰訊的只有綠磚和 qq 會員了。不過騰訊雲,有點坑。
    Elietio
        305
    Elietio  
       2019-10-24 10:47:14 +08:00
    业务 code 还是有必要的
    我们最近的项目是这样做法,http code+业务 code,
    http code 200,业务 code 0 表示处理成功
    http code 40X, 返回具体的业务 code 表示客户端请求错误,一般是鉴权、参数校验不通过
    http code 50X,同上,表示服务端错误,服务处理的错误和异常
    另外 nginx 之类的反代要注意是否有对不同 http code 做了处理,否则非 200 响应可能会返回默认错误页面
    1  2  3  4  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2782 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 12:50 · PVG 20:50 · LAX 04:50 · JFK 07:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.