REST全称是Representational State Transfer,中文意思是表述性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,是HTTP规范的主要编写者之一。 描述了一个架构样式的网络系统,比如 web 应用程序。值得注意的是REST并没有一个明确的标准,而更像是一种设计的风格。
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。
RESTful架构是对MVC架构改进后所形成的一种架构,通过使用事先定义好的接口与不同的服务联系起来。在RESTful架构中,浏览器使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此,RESTful是通过URI实现对资源的管理及访问,具有扩展性强、结构清晰的特点。
虽然REST本身受Web技术的影响很深, 但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。
GET,DELETE,PUT和POST常见状态码:
GET
• 200(OK) - 表示已在响应中发出
• 204(无内容) - 资源有空表示
• 301(Moved Permanently) - 资源的URI已被更新
• 303(See Other) - 其他(如,负载均衡)
• 304(not modified)- 资源未更改(缓存)
• 400 (bad request)- 指代坏请求(如,参数错误)
• 404 (not found)- 资源不存在
• 406 (not acceptable)- 服务端不支持所需表示
• 500 (internal server error)- 通用错误响应
• 503 (Service Unavailable)- 服务端当前无法处理请求
DELETE
• 200 (OK)- 资源已被删除
• 301 (Moved Permanently)- 资源的URI已更改
• 303 (See Other)- 其他,如负载均衡
• 400 (bad request)- 指代坏请求
• 404 (not found)- 资源不存在
• 409 (conflict)- 通用冲突
• 500 (internal server error)- 通用错误响应
• 503 (Service Unavailable)- 服务端当前无法处理请求
PUT
• 200 (OK)- 如果已存在资源被更改
• 201 (created)- 如果新资源被创建
• 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)- 服务当前无法处理请求
POST
• 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)- 服务当前无法处理请求
幂等性
用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用
GET
• 安全且幂等
POST
• 不安全且不幂等
PUT
• 不安全但幂等
DELETE
• 不安全但幂等
I love coding but I don’t love life