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

RESTful 接口的设计规范

  •  
  •   professorz · 2016-06-16 11:21:43 +08:00 · 4965 次点击
    这是一个创建于 3115 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前参考微信相关开放 api 的设计,前后端分离过程中,每个 api 都设置了 errCode 和 msg 信息,每个 api 的返回信息大致是这样:

    {
        "errCode":0,
        "msg":"ok",
        "data":{}
    }
    

    其中 data 是对象或数组。 最近研究了一下 RESTful 接口设计规范,并没有提到要用 errCode 和 msg 来规范。也发现很多线上应用也确实没有这样的设计。 大家都是怎么处理的。

    12 条回复    2016-06-16 17:00:19 +08:00
    just4test
        1
    just4test  
       2016-06-16 11:42:37 +08:00
    返回 200 就直接是数据内容
    返回 400 、 500 才有 err 信息。
    cloverstd
        2
    cloverstd  
       2016-06-16 11:44:11 +08:00
    我目前是忽略所有 HTTP Status Code
    全部 返回 200
    然后在返回结果里用 code 表示状态
    {
    "data": null,
    "meta": {
    "code": 0,
    "message": "success"
    }
    }
    Ouyangan
        3
    Ouyangan  
       2016-06-16 11:45:56 +08:00
    private String msg;
    private int code;
    private Object data;
    wbolor
        4
    wbolor  
       2016-06-16 12:25:29 +08:00
    严格按照 RESTful 来的话,有些状态码可能会遭运营商劫持,比如 404 。。。
    heww
        5
    heww  
       2016-06-16 12:34:34 +08:00
    @wbolor 运营商会劫持 https 的状态码吗?
    zwh2698
        6
    zwh2698  
       2016-06-16 13:15:18 +08:00 via Android
    REST 接口,真的要设计成 200 的返回值,千万别设计其他返回值,第一开发调试简单,第二运维简单,第三上面兄弟说了,最关键的,返回其他值,你不知道是你的业务错了还是服务框架有问题!!!都是泪啊,
    zwh2698
        7
    zwh2698  
       2016-06-16 13:17:16 +08:00 via Android
    还有就是千万不要相信国内某企业定的一个 REST 规范,自己的开发都是一坨,一坨的
    otakustay
        8
    otakustay  
       2016-06-16 13:19:30 +08:00
    同意在 REST 的基础上忽略 status code ,一方面部分 status code 在部分浏览器或运营商下会出问题,一方面 status code 的数量和分类不足以表达全部的业务
    professorz
        9
    professorz  
    OP
       2016-06-16 13:29:26 +08:00
    @zwh2698
    @otakustay
    @heww
    各位意思是 在返回 json 中设定 errCode 等字段比较好是吧
    twtiyb
        10
    twtiyb  
       2016-06-16 14:15:50 +08:00
    楼上+1 。
    learnshare
        11
    learnshare  
       2016-06-16 14:46:43 +08:00
    首先使用 HTTP code ,如果众多 code 都无法满足,再考虑自定义 code
    iburu
        12
    iburu  
       2016-06-16 17:00:19 +08:00
    从没见过真正的 rest
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5229 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 03:47 · PVG 11:47 · LAX 19:47 · JFK 22:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.