RESTful/CRUD api

更新日期: 2018-01-26 阅读次数: 7460 分类: RESTful

Keep it simple, stupid. -- K.I.S.S

RESTful 与 CRUD 区别是什么

  • CRUD 定义了四个基本的数据操作:CREATE, READ, UPDATE, DELETE
  • RESTful 则是架构层的概念,包含了 CRUD 的理念。使用唯一的 URI 来标识要操作的资源。

URL

以 todos 为例

  • /todos
    • GET -> 批量获取
    • POST -> 创建一条新的 todo
  • /todos/(\d+)
    • GET -> 获取一条 todo
    • PUT -> 更新一条 todo
    • DELETE -> 删除一条 todo

如何让 RESTful api 与普通的返回 HTML 的 URL 名字区分开

  • RESTful api 的 URL 全部以 api 开头,例如 /api/todos
  • 返回 HTML 的 URL 则不需要加 api 前缀,例如 /todos

Response Format

use json

如何表示错误类型? HTTP 状态码还是单独的 json 字段?

比如一条插入操作,如何让前端知道插入成功了。如果使用 HTTP 状态码,返回 200 表 示成功,看起来很合理。但是,如果你访问了错误的 URL,通常对方返回的也是 200. 问题就出现了。所以还是使用自己的一套错误码比较靠谱。

返回码

参考腾讯开放平台 API 的设计,采用二级错误码机制

  • ret: 公共返回码
    • ret=0, 成功返回
    • ret=1, 参数错误
    • ret=2, 频率受限
    • ret=3, 鉴权失败
    • ret=4, 服务器内部错误
    • ret=5, 用户错误
    • ret=7, 未实名认证
  • errcode: 二级错误码 (小应用可以不使用)
    • 以 ret=1 为例,errcode=260000,error content len (内容长度错误,超出140字或为空)
  • msg: 错误信息
    • ret=0, errcode=0, msg="ok"
    • ret=1, errcode=260000, msg="error content len"
  • data: 有用的数据

参考

爱评论不评论

近期节日

2020年04月01日 愚人节
2020年04月02日 国际儿童图书日
2020年04月03日 寒食节
2020年04月04日 清明节
2020年04月07日 世界卫生日
2020年04月11日 世界帕金森病日
2020年04月19日 谷雨
2020年04月21日 复活节
2020年04月22日 世界地球日
2020年04月23日 世界读书日
2020年04月26日 知识产权日
2020年04月30日 佛诞
查看更多节日