如何证明 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 服务? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JMeter 调用你的 Restful Web Service?进行简单的压力测试和自动化测试

RESTful Web 服务如何正确生成 JSON?

如何自动调用 RESTful Web 服务

如何使用 RESTful Web 服务创建异步通知系统?

如何使用 Spring RESTful Web 服务处理 CSRF 保护?

如何使用 jQuery AJAX 发布到 RESTful Web 服务?