RESTful 接口的设计规范 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
professorz
V2EX    API

RESTful 接口的设计规范

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

    之前参考微信相关开放 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     Solana     2792 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 20ms UTC 14:46 PVG 22:46 LAX 06:46 JFK 09:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86