RESTful API
什么是RESTful REST全称Representational State Transfer(表述性状态转移) REST并不是一种创新技术,它指的是一组架构约束
什么是RESTful
REST全称Representational State Transfer(表述性状态转移)
REST并不是一种创新技术,它指的是一组架构约束条件和原则。只要架构符合REST的约束条件和原则,就可以被称之为RESTful架构。
核心内容
1.资源和URI
2.资源的表述
3.状态转移(资源在客户端发生变化进入到后续的状态(客户端对服务器端资源的操作行为)
设计概念和准则
网络上所有事物都可以被抽象为资源
每一个资源都有唯一的资源标识,对资源的操作不会改变这些标识
所有操作都是无状态的
架构特点
1.统一了客户端访问资源的接口
2.URL更加简洁,易于理解,便于扩展
3.有利于不同系统之间的资源共享
请求
HEAD 获取Request-URI所标识资源的响应信息报头
GET 获取Request-URI所标识的资源
POST 在Request-URI标识的资源后附加新的数据
PUT 更新Request-URI所标识的资源,返回完整的更新后的资源
PATCH 与PUT类似,但更新后只返回更新过的资源
DELETE 删除Request-URI所标识的资源
OPTIONS 查询服务器性能或与资源相关的选项和需求
响应
200 OK 请求成功
201 CREATED 新建或修改数据成功
204 NO CONTENT 删除数据成功
400 BAD REQUEST 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 身份验证失败,服务器拒绝提供服务
403 Forbidden 用户访问被禁止
404 Not Found 请求资源不存在
422 Unprocesable Entity 创建一个对象时发生验证错误
500 Internal Server Error 服务器内部错误
503 服务器当前不能处理客户端请求
适用性
对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景,所以要使用的话还是要看场景来决定。
设计要点
1.资源路径
所有网址中不能有动词,只能有名词。一般来说API中的名词应该使用复数
2.HTTP动词
3.过滤信息
分页参数等与主要业务无关的参数
4.状态码
5.错误处理
6.返回结果
GET /collections 返回资源对象的列表(数组)
GET /collections/identity 返回单个资源对象
POST /collections 返回新生成的资源对象
PUT /collections/identity 返回完整的资源对象
PATCH /collections/identity 返回被修改的属性
DELETE /collections/identity 返回一个空文档