必需属性是RESTful Web服务吗?

时间:2012-07-25 01:17:00

标签: url rest

我希望这不是一个愚蠢的问题,但今天我得到一条评论说,必须通过用户友好的URL访问PHP Web服务才能被视为RESTful。这是真的吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

用户友好的网址没有明确定义,因此不存在此类限制。用户友好取决于用户。没有这样的约束,HTTP是RESTful,并且有很多非“用户友好”的URL。

答案 1 :(得分:0)

那么Wikipedia Restful Information并不是所有的结尾,但根据定义的约束,用户友好的网址不是其中之一。

  

REST架构风格描述了应用于架构的以下六个约束,同时让各个组件的实现可以自由设计:

     

客户机 - 服务器

     

统一接口将客户端与服务器分开。这种关注点分离意味着,例如,客户端不关心数据存储,数据存储仍然是每个服务器的内部,从而提高了客户端代码的可移植性。服务器不关心用户界面或用户状态,因此服务器可以更简单,更具可伸缩性。服务器和客户端也可以独立替换和开发,只要它们之间的接口不被更改即可。

     

无状态

     

客户端 - 服务器通信进一步受到请求之间没有客户端上下文存储在服务器上的限制。来自任何客户端的每个请求都包含服务请求所需的所有信息,并且任何会话状态都保存在客户端中。服务器可以是有状态的;此约束仅要求服务器端状态可由URL作为资源进行寻址。这不仅使服务器更易于监控,而且使其在部分网络故障时更可靠,并进一步增强其可扩展性。

     

可缓存

     

与万维网一样,客户端可以缓存响应。因此,响应必须隐式或显式地将自身定义为可缓存或不可缓存,以防止客户端重用陈旧或不适当的数据以响应进一步的请求。管理良好的缓存部分或完全消除了一些客户端 - 服务器交互,进一步提高了可伸缩性和性能。

     

分层系统

     

客户通常无法判断它是直接连接到终端服务器,还是沿途的中介。中间服务器可以通过启用负载平衡和提供共享缓存来提高系统可伸缩性。他们还可以执行安全策略。

     

按需代码(可选)

     

服务器可以通过传输可执行代码来临时扩展或自定义客户端的功能。这方面的示例可能包括编译组件,如Java applet和客户端脚本,如JavaScript。

     

统一界面

     

下面讨论的客户端和服务器之间的统一接口简化和分离了体系结构,使每个部分都能够独立发展。该界面的四个指导原则详述如下。

     

REST架构的唯一可选约束是按需代码。如果服务违反任何其他约束,则不能严格地将其视为RESTful。

     

遵守这些约束,从而符合REST架构风格,将使任何类型的分布式超媒体系统都具有理想的新兴属性,例如性能,可伸缩性,简单性,可修改性,可见性,可移植性和可靠性。