如何证明 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 服务在VERB
与NOUN
分离和资源 概念方面增加了更多约束。
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?进行简单的压力测试和自动化测试