REST(representational State Transfer)表述性状态转移
看起来这个名词有点难以理解,个人理解成代表性的,具体的状态(可以是动词)引起的状态转移?
等级0
普通的请求/响应模式,使用xml,json或其他格式发送请求,接收响应
等级1
引入资源(Resource)的概念,服务器返回相应资源,客户端对指定资源(体现在url中)附加相应参数进行操作,与等级0相比,等级0更像是传递参数,而等级1则是调用指定对象的某个方法并传递参数
等级2 HTTP动词
会尽可能根据HTTP协议定义的那样来合理使用HTTP动词,并配合响应码来帮助交流
等级3 超媒体控制
响应信息中包括一系列uri,指出后续的操作
Levels的意义
- Level 1 解释了如何通过分治法(Divide and Conquer)来处理复杂问题,将一个大型的服务端点(Service Endpoint)分解成多个资源。
- Level 2 引入了一套标准的动词,用来以相同的方式应对类似的场景,移除不要的变化。
- Level 3 引入了可发现行(Discoverability),它可以使协议拥有自我描述(Self-documenting)的能力。
这一模型帮助我们思考我们想要提供的HTTP服务是何种类型的,同时也勾勒出人们和它进行交互时的期望。
参考链接:
Richardson Maturity Model - steps toward the glory of REST(原文)
Richardson成熟度模型(Richardson Maturity Model) - 通往真正REST的步骤(译文)