如何证明Restful Web服务是一种Web服务?

时间:2013-09-14 04:54:54

标签: java web-services rest servlets

昨天我接受了一次采访,我遇到了一个有趣的问题,我被卡住了。 问题“你怎么说Restful web服务是一个Web服务?”。我试图解释所有可能的证明方法。但是所有的答案都被“Servlets可以做同样的事情所阻止。所以Servlet是宁静的Web服务吗?”

有人可以分享你的想法吗?

6 个答案:

答案 0 :(得分:1)

要回答您的问题,我们先问一下什么是网络服务?

  • 纯粹抽象地说,
  

Web服务是两种电子设备之间的通信方式   万维网上的设备。 (维基百科)

  • 现在,两个设备通过互联网进行通信的接受的行业规范正在使用 XML消息(使其成为inter-operable

  • 这给我们带来了不同类型的Web服务,主要分为SOAP和RESTful。

  • SOAP Web服务使用XML(符合特定协议或xml架构,换言之,称为WSDL)。因此,SOAP Web服务对Web服务与其客户之间的消息交换方式提出了某些规则/规定。可以使用除HTTP之外的任何方便的协议来交换消息。
  • 现在在 RESTful场景中,您仍然会交换消息(xml / json等)但是没有新的附加规范(我知道WADL但是它的发明更多是为了提供工具支持RESTful,本身无任何RESTful Web服务
  • 在RESTful中,没有新的协议定义(用于交换消息)。它使用已建立的HTTP协议规范,它将URL中的参数作为路径元素传递,并使用HTTP方法发送数据(即GET / POST / PUT / DELETE)。

现在谈谈你的问题 Servlet是否是宁静的网络服务,让我们看看Servlet做什么

  • 接受GET / POST请求
  • 返回一个HTML(一般来说)(基本上是XML)

现在,如果以这种方式编写servlet,可以通过以下URL调用它

http://www.myrestwebservices/services/getstockquote/GOOG

这个servlet

  • 映射到网址格式/ services/getstockquote
  • 获取GOOG作为URL路径中的输入数据,它可以解析,查询某个系统以获取Google的最新股票报价。
  • 将数据作为text / xml返回给客户端

    这个servlet不满足RESTful场景的以下basic requirements吗?

  • 明确使用HTTP方法
  • 无国籍。
  • 公开类似目录结构的URI。
  • 传输XML,JavaScript对象表示法(JSON),(基本上是文本)

从技术上讲,是的,Servlet是一种RESTful Web服务,但这可能不足以满足Web服务本身的通用业务需求。因此,对于完整的RESTful Web服务,我们需要一个专门用于解决这些基本业务需求的servlet(然而)。

答案 1 :(得分:0)

您可以使用Servlet设计RESTful Web服务。

Servlet可帮助您为HTTP请求创建HTTP响应。 RESTful webservices位于HTTP协议之上,因此您可以使用Servlet创建REST服务。

答案 2 :(得分:0)

任何基于HTTP的代码(使用任何语言等)都可以是一个宁静的Web服务,只要它符合REST的要求......

请参阅:http://en.wikipedia.org/wiki/Representational_state_transfer

答案 3 :(得分:0)

  1. 一切都是资源
  2. 所有资源都公开标准接口GET,POST,PUT,DELETE
  3. REST服务是幂等的
  4. 资源可能链接到其他资源
  5. 多个表示
  6. 无状态沟通
  7. 有关上述

    的详细信息,请参阅此post

答案 4 :(得分:0)

您对这些问题的处理方法应该是自下而上的。从服务的定义开始。然后定义Web服务,然后您可以轻松区分什么是Web服务和什么不是。一般来说,对于这样的讨论,我会像这样攻击它:

  1. 为客户定义合同的任何可重用代码都是一项服务。桌面上的打印机驱动程序是一项服务。
  2. 可以通过网络(文本请求/转发中的HTTP以上)使用的任何服务都是Web服务。
  3. RESTful服务在VERBNOUN分离以及 资源 的概念方面增加了更多约束。
  4. Servlet与REST的区别在于Servlet中没有合同,因此Servlet本身不是服务。
  5. 没有人可以阻止想要使用Servlet实现RESTful服务的人 - 但是在存在框架以帮助简化开发的世界中,REST开发水平太低了!!
  6. Java世界中的所有Web Restful服务都是通过Servlet编写的,Servlet是处理HTTP的低端实现。如果传输不是HTTP,则它是服务但不是Web服务:)

答案 5 :(得分:0)

我认为答案相当明显,所以他们给你的问题有点奇怪。基于SOAP和REST的服务都使用HTTP作为传输机制,因此它们实际上是Web服务。

它们的不同之处在于,基于SOAP的服务更严格地由规范定义,其中REST-full服务更像是一种在实现中受到较少约束的架构风格。