RESTful Web服务实际上做了什么HTTP编程没有? RESTful WS的主要用途是什么?

时间:2015-04-14 15:35:43

标签: java web-services rest restful-architecture

我知道RESTful WS是一个架构,它是一种通过老式JAX-RPC实现Web服务的新方法。

在RESTful中,我们使用@ GET,@ POST等来管理呼叫/开发资源。使用HTTP编程也可以实现相同(两者都是无状态的)。 但是,引入/实施RESTful的其他核心主要用途或需求是什么?正如我们在其中所做的一切,可以使用HTTP编程(我们使用相同的方法)来完成?

3 个答案:

答案 0 :(得分:2)

HTTP是一种传输协议。

RESTful是一组原则。

基本上,RESTful Web服务是一种特定的HTTP应用程序,它遵循以下原则:

  • 客户端服务器
  • 无国籍
  • 缓存
  • 层状

答案 1 :(得分:2)

问题是比较不同的事情。 HTTP是一种协议,而REST是一种架构风格。这就像问一个砖块没有的房子。这没有意义。 HTTP可以是REST应用程序的构建块。

REST不是关于HTTP或任何特定协议。 REST是关于将Web本身的成功设计决策应用于软件开发。问题是术语。互联网上99.9%的所谓REST应用程序并不是真正的REST,因为REST成为引用任何非SOAP的HTTP API的流行语。一些REST倡导者放弃了争取正确使用该术语的斗争,现在将REST应用程序称为超媒体。

与Web一样,REST用于数十年的软件开发。 REST使您可以更轻松地发展应用程序而不会破坏客户端。想想今天你如何仍然可以访问几十年前创建的网站,几乎所有网站仍然可以正常运行。如果您正在创建具有几年规模的长期目标的软件,那么REST就足够了。如果这不是你真正需要的,那么正确的REST并不重要。只要使用适合你的任何东西,此时我认为如果你称之为REST,就不会再关心了。

答案 2 :(得分:1)

问题不在于" REST与HTTP编程"。 REST是关于如何创建分布式Web应用程序的更高概念。 HTTP是一种具体技术。 REST定义了一些被认为是良好实践的约束。

HTTP只是一种非常适合实现REST样式服务的技术:

  • 可寻址性=>在HTTP中,每个资源都可以通过唯一标识符(URI)进行寻址
  • 多个表示=>每个资源都可以有多个表示(JSON,XML) - 例如,HTTP-Request可以“询问”。正确的表示(通过标题)
  • Common Interface =>而不是创建特定于应用程序的接口(SOAP中的方法名称),HTTP已经提供了一个接口:GET,PUT,POST,DELETE ......)
  • 无状态=> HTTP-Requests是无设计的
  • 超媒体=>通过检查表示中包含的链接
  • 来驱动应用程序状态(客户端)