何为RESTful
RESTful架构是目前最流行的一种互联网软件架构
是Roy Thomas Fielding在他2000年的博士论文中提出的
是Representational State Transfer的缩写,翻译过来是”表现层状态转化”
是所有Web应用都应该遵守的架构设计指导原则
7个HTTP方法:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS
- 安全:线程安全.(多线程同时读不会有问题;多线程同时修改就容易出问题了)
-
- 幂等性:同一个请求(路径/参数)无论请求多少次,资源的状态都是一样的.(无论get多少次,获取的结果都一样)
GET
- 安全且幂等
- 获取表示
- 变更时获取表示(缓存)
适合查询类接口使用
POST
- 不安全且不幂等
- 使用服务端管理的(自动产生)的实例号创建资源
- 创建子资源
- 部分更新资源
- 如果没有被修改,则不过更新资源(乐观锁)
适合数据提交类的接口使用(部分信息由服务器产生,例如主键由服务器来生成,其他信息客户端提交)
PUT
- 不安全但幂等
- 用客户端管理的实例号创建一个资源
- 通过替换的方式更新资源
- 如果未被修改,则更新资源(乐观锁)
适合更新数据的接口使用(所有信息全部由客户端提交,例如更新信息时,所有涉及到的信息全部由客户端来提交)
DELETE
- 不安全但幂等
- 删除资源
适合删除数据的接口使用
请求返回响应码
代码 | 含义 |
---|---|
200 | (OK)- 如果现有资源已被更改 |
201 | (created)- 如果新资源被创建 |
202 | (accepted)- 已接受处理请求但尚未完成(异步处理) |
301 | (Moved Permanently)- 资源的URI被更新 |
303 | (See Other)- 其他(负载均衡) |
400 | (bad request)- 指代坏请求 |
404 | (not found)- 资源不存在 |
406 | (not acceptable)- 服务端不支持所需表示 |
409 | (conflict)- 通用冲突 |
412 | (Precondition Failed)- 前置条件失败(如执行条件更新时的冲突) |
415 | (unsupported media type)- 接受到的表示不受支持 |
500 | (internal server error)- 通用错误响应 |
503 | (Service Unavailable)- 服务当前无法处理请求 |