Restful
REST API
URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。
- 发送请求进行CRUD哪个操作由请求方式来决定
- 同一个请求路径可以进行多个操作
- 请求方式会用到GET/POST/PUT/DELETE
非 REST API
- 请求方式不决定请求的CRUD操作
- 一个请求路径只应对应一个操作
- 一般只有 GET/POST
客户-服务器(Client-Server)客户端服务器分离
优点:
- 提高用户界面的便携性(操作简单)
- 通过简化服务器提高可伸缩性(高性能,低成本)
- 允许组件分别优化(可以让服务端和客户端分别进行改进和优化)
无状态(Stateless)
从客户端的每个请求要包含服务器所需要的所有信息
优点:
- 提高可见性(可以单独考虑每个请求)
- 提高了可靠性(更容易从局部故障中修复)
- 提高可扩展性(降低了服务器资源使用)
缓存(Cachable)
服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的信息发送请求。
优点:
- 减少交互次数
- 减少交互的平均延迟
分层系统(Layered System)
系统组件不需要知道与他交流组件之外的事情。封装服务,引入中间层。
优点:
- 限制了系统的复杂性
- 提高可扩展性
统一接口(Uniform Interface)
优点:
- 提高交互的可见性
- 鼓励单独改善组件
支持按需代码(Code-On-Demand 可选)
优点:
- 提高可扩展性
- 因为其他答案已经提到了一些概念,所以我没有多写。
restful架构
-
每一个URI代表一种资源;
-
客户端和服务器之间,传递这种资源的某种表现层;
-
客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。