如何证明 Restful Web 服务是 Web 服务? [关闭]

Posted

技术标签:

【中文标题】如何证明 Restful Web 服务是 Web 服务? [关闭]【英文标题】:How to prove Restful Web service is a web service? [closed] 【发布时间】:2013-09-18 20:34:02 【问题描述】:

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

谁能分享你的想法?

【问题讨论】:

Servlet vs RESTful 的可能重复项 这里有信息可以帮助解释:***.com/q/243388/814064 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

见:http://en.wikipedia.org/wiki/Representational_state_transfer

【讨论】:

【参考方案3】:
    一切都是资源 所有资源都公开一个标准接口 GET、POST、PUT、DELETE REST 服务是幂等的 资源可能会链接到其他资源 多重表示 无状态通信

查看post了解以上详情

【讨论】:

【参考方案4】:

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

    任何为客户定义合同的可重用代码都是服务。桌面上的打印机驱动程序是一项服务。 任何可以通过web(通过HTTP in text request/resposne)使用的服务都是网络服务。 RESTful 服务在VERBNOUN 分离和资源 概念方面增加了更多约束。 Servlet 与 REST 的不同之处在于 Servlet 中没有契约,因此 Servlet 本身不是服务。 没有人可以阻止想要使用 Servlet 实现 RESTful 服务的人 - 但在一个存在框架以帮助简化开发的世界中,这对于 REST 开发来说太低了!!

Java 世界中的所有 Web Restful 服务都是通过 Servlet 编写的,Servlet 是处理 HTTP 的低端实现。如果传输不是HTTP,它是一个服务而不是Web服务:)

【讨论】:

感谢 Paul 进行编辑,使其更美观。 感谢大家的支持和cmets。答案对我来说是有意义和合理的。再次感谢您。【参考方案5】:

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

在纯粹抽象的术语中,

Web 服务是两个电子设备之间的通信方法 万维网上的设备。 (***)

现在,两个设备通过 Internet 进行通信的公认的行业规范是使用 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 是否是宁静的 Web 服务,让我们看看 Servlet 做了什么

接受 GET/POST 请求 返回一个 html(通常是)(本质上是 XML)

现在,如果一个 servlet 是这样编写的,它可以通过以下 URL 调用

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

这个小服务程序

映射到 URL 模式 /services/getstockquote

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

将数据作为文本/xml返回给客户端

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

明确使用 HTTP 方法

无国籍。

公开类似目录结构的 URI。

传输 XML,javascript Object Notation (JSON),(本质上是文本)

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

【讨论】:

【参考方案6】:

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

它们的区别在于,基于 SOAP 的服务更严格地由规范定义,因此 REST 完整服务更像是一种架构风格,在其实施中不受限制。

【讨论】:

以上是关于如何证明 Restful Web 服务是 Web 服务? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章