文章插图
一、REST来源【什么是REST?什么是RESTful?】REST:是一组架构约束条件和原则 , REST是Roy Thomas Fielding在他2000年的博士论文中提出的 。Roy Thomas Fielding是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器作者之一、Apache基金会第一任主席
二、什么是RESTREST(Representational State Transfer):表现层状态转移 , 一种软件架构风格 , 不是标准 。既然不是标准 , 我可以遵守 , 也可以不遵守!!! 什么是表现层状态转移:
Representational (表现层) State Transfer(状态转移):通过HTTP动词实现 。
- 总结:URL定位资源 , HTTP动词(GET , POST , PUT , DELETE)描述操作 。
四、如何设计RESTful风格的API1.路径设计在RESTful架构中 , 每个网址代表一种资源(resource) , 所以网址中不能有动词 , 只能有名词 , 而且所用的名词往往与数据库的表名对应 , 一般来说 , 数据库中的表都是同种记录的”集合”(collection) , 所以API中的名词也应该使用复数 。举例来说 , 有一个API提供动物园(zoo)的信息 , 还包括各种动物和雇员的信息 , 则它的路径应该设计成下面这样 。
https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees2.HTTP动词设计对于资源的具体操作类型 , 由HTTP动词表示 , 常用的HTTP动词如下:
请求方式 含义GET 获取资源(一项或多项)POST 新建资源PUT 更新资源(客户端提供改变后的完整资源)DELETE 删除资源如何通过URL和http动词获悉要调用的功能:
请求方式 含义GET /zoos 列出所有动物园POST /zoos 新建一个动物园GET /zoos/ID 获取某个指定动物园的信息PUT /zoos/ID 更新某个指定动物园的信息(提供该动物园的全部信息)DELETE /zoos/ID 删除某个动物园GET /zoos/ID/animals 列出某个指定动物园的所有动物DELETE /zoos/ID/animals/ID 删除某个指定动物园的指定动物RESTFul API的一些最佳实践原则:
- 使用HTTP动词表示增删改查资源 , GET:查询 , POST:新增 , PUT:更新 , DELETE:删除
- 返回结果必须使用JSON
- HTTP状态码 , 在REST中都有特定的意义:200,201,202,204,400,401,403 。比如401表示用户身份认证失败 , 403表示你验证身份通过了 , 但这个资源你不能操作 。
- 如果出现错误 , 返回一个错误码: 10000=通用参数错误10001=资源未找到
- API 必须有版本的概念, v1, v2
- 使用Token令牌来做用户身份的校验与权限分级
- url中大小写不敏感 , 不要出现大写字母
- 使用中划线而不是使用下划线做URL路径中字符串连接
- 有一份漂亮的文档
- 一个经验性的总结:对于开放的API , 比如豆瓣、新浪微博、GitHub , 好用 , 非常合适
- 对于内部开发 , 不好用
- REST是一种软件架构风格 , 不是标准 。既然不是标准 , 可以遵守 , 也可以不遵守!
推荐阅读
- RESTful API书写规范
- 梦见给小孩擦屁股屎是什么意思 梦见给小孩擦屁股屎粘衣服上
- 为什么微服务一定要有网关?
- 梦见和媳妇又结婚是什么意思 梦见自己和媳妇结婚
- IP地址切换工具NetSetMan使用方法
- REST API 的安全基础
- 酱焖鲤鱼
- 红烧小螃蟹
- 有人有阴阳眼是真的吗 阴阳眼是什么样的
- 酱爆鳝丝