Java 如何证明RESTfulWeb服务是Web服务?

Java 如何证明RESTfulWeb服务是Web服务?,java,web-services,rest,servlets,Java,Web Services,Rest,Servlets,昨天我参加了一次面试,我遇到了一个有趣的问题,我被卡住了。 问题是“如何说RESTfulWeb服务是web服务?”。我试图解释所有可能的证明方法。但是所有的答案都被“servlet也可以这样做。那么servlet是RESTfulWeb服务?” 有人可以分享您的想法吗?您可以使用Servlet设计RESTful Web服务 Servlet帮助您为HTTP请求创建HTTP响应。RESTful web服务位于HTTP协议之上,因此您可以使用Servlet创建REST服务。任何基于HTTP的代码(使用任

昨天我参加了一次面试,我遇到了一个有趣的问题,我被卡住了。 问题是“如何说RESTfulWeb服务是web服务?”。我试图解释所有可能的证明方法。但是所有的答案都被“servlet也可以这样做。那么servlet是RESTfulWeb服务?”


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

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

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

任何基于HTTP的代码(使用任何语言等)都可以是RESTful web服务,只要它符合REST的要求

见:

  • 一切都是资源
  • 所有资源都公开一个标准接口GET、POST、PUT和DELETE
  • REST服务是幂等的
  • 资源可以链接到其他资源
  • 多重表征
  • 无状态通信

  • 有关上述问题的详细信息,请参见此

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

  • 为客户定义合同的任何可重用代码段都是服务。桌面上的打印机驱动程序是一项服务
  • 任何可以通过web(通过文本请求/resposne中的
    HTTP
    )使用的服务都是web服务
  • RESTful服务在
    动词
    名词
    分离和资源的概念方面增加了更多的限制
  • servlet与REST的区别在于servlet中没有契约,因此servlet本身不是服务
  • 没有人能阻止一个人使用servlet实现RESTful服务——但是在一个有框架帮助简化开发的世界里,REST开发的水平太低了
    Java世界中的所有Web Restful服务都是通过Servlet编写的,Servlet是处理
    HTTP
    的低端实现。如果传输不是
    HTTP
    ,它是服务而不是Web服务:)

    要回答您的问题,让我们先问一下什么是Web服务

    • 纯粹抽象地说,
    web服务是两个电子服务器之间的通信方法 通过万维网的设备。(维基百科)

    • 现在,两台设备通过互联网进行通信的公认的行业规范是使用XML消息(这使得

    • 这就引出了不同类型的web服务,主要分为SOAP和RESTful

    • SOAPWeb服务使用XML(它符合特定协议或XML模式,换句话说,它被称为XML)。因此,soapweb服务在web服务及其客户机之间交换消息的方式上设置了某些规则/规则。这些消息可以使用HTTP之外的任何方便协议进行交换

    • 现在在一个RESTful场景中,您仍然可以交换消息(xml/json等),但是没有新的附加规范(我知道,但它是为了提供工具支持RESTful而发明的,与RESTful web服务本身无关)

    • 在RESTful中,没有新的协议定义(用于交换消息)。它使用已经建立的HTTP协议规范,将URL中的参数作为路径元素传递,并使用HTTP方法发送数据(即GET/POST/PUT/DELETE)

    现在转到您的问题,即servlet是否是restful web服务,让我们看看servlet是做什么的

    • 接受GET/POST请求
    • 返回一个HTML(通常是XML)
    现在,如果servlet是以这种方式编写的,那么可以通过以下URL调用它

    这个servlet

    • 映射到URL模式/
      services/getstockquote

    • 获取GOOG作为URL路径中的输入数据,它可以解析、查询某些系统以获取Google的最新股票报价

    • 将数据作为text/xml返回给客户端

      这个servlet不满足以下RESTful场景吗

    • 显式使用HTTP方法

    • 没有国籍

    • 公开类似URI的目录结构

    • 传输XML、JavaScript对象表示法(JSON)(本质上是文本)


    所以从技术上讲,Servlet是一种RESTful web服务,但这可能不足以满足web服务本身的一般业务需求。因此,对于一个全面的RESTful web服务,我们需要一个专门为满足这些基本业务需求而编写的servlet。

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


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

    这里的信息可能重复,这有助于解释:感谢Paul对其进行编辑,使其更具表现力。感谢您的所有支持支持和评论。答案对我来说是合理的。再次感谢你。