REST架构的关键组成部分:
1. 资源:由逻辑URLs来标识,代表资源的状态和功能
逻辑网址表示资源是可以由系统的其他部分全局寻址的;
资源是一个真正的RESTful设计的关键因素,就好象是RPC中“方法”或者是SOAP 网络服务中的“服务”。和RPC不同,你不是发出“getProductName”,然后再发出“getProductPrice“请求;在REST中,是将你要查看的产品数据作为一种资源 - 这种资源应该包含所有必需的信息(或与之相关的信息)。
2. 一个资源网:这意味着一个单一的资源不应该太大,也不应该包含过于详细的细节。每当有相关的内容,资源应包含更多信息的链接 - 就好像网页一样。
3. 该系统具有客户端 - 服务器:当然,一个组件的服务器也可以是另一个组件的客户端。
4. 没有任何连接状态:交互是无状态的(当然,服务器和资源可以是有状态的)。每个新的请求,应随身携带来完成该请求所需要的所有信息,必须不依赖于相同客户端以前的交互。
5. 资源在需要的情况下应该是可缓存:资源应该有到期日期/时间。该协议必须允许服务器明确指定哪些资源可以被缓存,可以缓存多长时间。
由于REST协议普遍使用HTTP,因此,HTTP的缓存控制头可以用做此目的;
客户必须尊重服务器对每个资源的的缓存规范。
6. 代理服务器:可以用来作为架构的一部分,以提高性能和可扩展性。可以使用任何标准的HTTP代理。
请注意,(作为一个客户端)你的应用程序可以使用REST服务,而不需要一个REST架构,例如,一个单一的机器,其中的非REST程序可以访问第三方REST服务。
1. 资源:由逻辑URLs来标识,代表资源的状态和功能
逻辑网址表示资源是可以由系统的其他部分全局寻址的;
资源是一个真正的RESTful设计的关键因素,就好象是RPC中“方法”或者是SOAP 网络服务中的“服务”。和RPC不同,你不是发出“getProductName”,然后再发出“getProductPrice“请求;在REST中,是将你要查看的产品数据作为一种资源 - 这种资源应该包含所有必需的信息(或与之相关的信息)。
2. 一个资源网:这意味着一个单一的资源不应该太大,也不应该包含过于详细的细节。每当有相关的内容,资源应包含更多信息的链接 - 就好像网页一样。
3. 该系统具有客户端 - 服务器:当然,一个组件的服务器也可以是另一个组件的客户端。
4. 没有任何连接状态:交互是无状态的(当然,服务器和资源可以是有状态的)。每个新的请求,应随身携带来完成该请求所需要的所有信息,必须不依赖于相同客户端以前的交互。
5. 资源在需要的情况下应该是可缓存:资源应该有到期日期/时间。该协议必须允许服务器明确指定哪些资源可以被缓存,可以缓存多长时间。
由于REST协议普遍使用HTTP,因此,HTTP的缓存控制头可以用做此目的;
客户必须尊重服务器对每个资源的的缓存规范。
6. 代理服务器:可以用来作为架构的一部分,以提高性能和可扩展性。可以使用任何标准的HTTP代理。
请注意,(作为一个客户端)你的应用程序可以使用REST服务,而不需要一个REST架构,例如,一个单一的机器,其中的非REST程序可以访问第三方REST服务。