2012-07-25 134 views
0

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

谢谢!

+0

不,这是不正确的。在创作,理解和记录服务时,一致且可读的URL有助于实现,但绝非必要。 – 2012-07-25 01:23:14

+0

@Multitut,我想你需要阅读REST接口并理解它是什么。这不仅仅是关于网址。 – 2012-07-25 01:23:22

+0

[看到这个答案。](http://stackoverflow.com/a/2612140/29995) – 2012-07-25 01:25:27

回答

0

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

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

客户端 - 服务器

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

无国籍

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

可缓存

的World Wide Web上,客户端可以缓存响应。因此,响应必须隐含地或明确地将其自身定义为可缓存或不可以,以防止客户端响应于进一步的请求而重新使用陈旧或不适当的数据。管理良好的缓存部分或完全消除了一些客户端 - 服务器交互,进一步提高了可伸缩性和性能。

分层系统

客户机通常无法告诉它是否被直接连接到端服务器,或沿途的中介。中介服务器可以通过启用负载平衡和提供共享缓存来提高系统可扩展性。他们也可能会执行安全策略。点播(可选)

服务器

代码能够暂时延长或可执行代码的传送定制客户端的功能。这样的例子可能包括编译的组件,例如Java小应用程序和诸如JavaScript的客户端脚本。

统一接口

客户端和服务器之间的统一接口,下面所讨论的,可以简化和解耦的架构,这使得每个部分独立地进化。下面详细介绍这个接口的四个指导原则。

REST架构的唯一可选约束是代码按需。如果某个服务违反了其他约束条件,则不能将其严格视为RESTful。遵循这些约束条件,从而符合REST架构风格,将使任何类型的分布式超媒体系统具有理想的紧急属性,如性能,可伸缩性,简单性,可修改性,可见性,可移植性和可靠性。

1

用户友好的url没有明确定义,所以不能有这样的约束。用户友好取决于用户。没有这样的约束,HTTP是RESTful,并且有很多非“用户友好”的URL。