REST(RESTful)网络服务是否与HTTP绑定(耦合或需要)?

4
标题基本上已经说明了一切,REST是否真正与HTTP绑定在一起,还是协议无关的? 因为我刚刚读了几篇关于REST的文章,遇到了两种不同的观点,所以我不知道哪一个是正确的。

这是一条注释,因为我没有写一个完整的答案:REST 不绑定于 HTTP。它描述了一种不依赖于像 HTTP 这样的协议的架构风格。根据维基百科的说法,HTTP 1.1 是在 Roy Fielding 写他的 REST 论文之后设计成一种 RESTful 协议的。 - wkl
1个回答

8

请允许我引用书籍"RESTful Web Services"(粗体为我所加):

REST的故事 REST很简单,但它定义明确,并不是将Web服务实现为“半吊子”网站的借口,因为“它们是相同的”。不幸的是,直到现在,主要的REST参考资料仍是Roy Fielding 2000年的博士论文第五章,这是一篇关于博士论文的好读物,但留下了大部分现实世界的问题。这是因为它呈现REST不是一种架构,而是一种评判架构的方式。“RESTful”这个术语就像“面向对象”的术语一样。一种语言、框架或应用程序可以以面向对象的方式设计,但这并不意味着它的架构是面向对象的架构。即使在像C++和Ruby这样的面向对象语言中,也可能编写不完全面向对象的程序。HTTP本身在REST的标准上表现得非常好。(这应该是因为Fielding共同撰写了HTTP标准,并编写了他的博士论文来描述Web的架构) 但是真正的网站、Web应用程序和Web服务经常背离REST的原则。(...)

注意,在第二段加粗字中,他说的是:“HTTP很适合REST”,而不是“REST适合/依赖于HTTP”。

简而言之:不是,“REST”这个术语并不一定与HTTP相关。符合RESTful架构的Web服务只是遵循RESTful架构的Web服务,希望实现Fielding在他的论文中列出的好处(例如无状态性、可寻址性等)。

创建RESTful Web服务的一种方法是将应用程序视为资源(而不是SOAP风格使用的操作)。这种思考方式与正确使用HTTP(其方法和状态码)结合使用,可以导致REST启用的架构,具有Fielding的论文所列出的所有好处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接