所以,我现在有一个调用Web服务来获取数据,在那里我做像这样www.example.com/service.asmx?param1=1¶m2=2这将返回一些XML,我解析URL一个基本的HTTP GET的应用程序。
我的问题是,这是否把它归类为一个RESTful Web服务? 我想没有,但我想知道是什么使得它一个REST Web服务?
我知道有REST和SOAP的Web服务,但你会在上述情况下被归类为,简单的HTTP GET的Web服务? 或者其他的东西?
谢谢,我想匹配的术语,以概念,原谅我,如果这是一个有点太初级了。
直接回答你的问题是号
打破你告诉我们你的服务我将讨论什么是不是RESTful的关于您的解决方案。
HTTP GET上像这样www.example.com/service.asmx?param1=1¶m2=2一个网址
您正在使用的HTTP GET,因此使用有限的一组动词的一个通过URI访问某些类型的资源。 这是REST风格,并且只要服务器不违反任何规则HTTP什么GET时,允许做符合统一接口约束。
纵观URL本身,它是你正在访问哪些资源,因此它确实暗示,您的网址空间可能不是的方式,便于做REST风格的设计结构化并不明显。 然而,休息不把你的网址看起来应该像什么(尽管什么soooooooo很多人认为)任何约束,所以没有什么unRESTful与您的网址。
这将返回一些XML,我解析。
这里是你的问题开始。 我所读隐含在这句话是客户端知道如何将数据解析出你的XML。 这是违反REST的自描述性约束。 HTTP消息应该包含所有这一切都需要在客户端知道如何处理从请求的响应信息。 媒体类型应该告诉客户什么样的信息是XML文件内。 如果你的服务返回应用程序/ xml,那么,客户知道的唯一的事情是,文件中包含的属性和元素。 如果客户端使用了带外的知识来解析XML,那么你介绍客户端和服务器之间的耦合。 一个REST的主要目标是消除耦合。
有许多的,一个服务必须以尊重被认为REST风格方面的限制,但你没有提供足够的细节有关的服务,说这种或那种方式是否符合要求。
REST服务是那些通常符合以下服务:
- 提供一种准确地描述被请求的资源标识符。
- 提供服务,像预期的那样GET请求是幂等,POST更新记录,PUT创建,删除删除
- 最小化状态被存储在服务器上
- 一般来说拆掉不必要的复杂性
- 在HTTP(虽然我见过的其他实现,他们肯定不是传统意义上的RESTful)
原因您的网址是不是“平安”,因为它可以是包含非识别信息(如.ASMX)。 另外有些人觉得加入URL参数是仅适用于过滤。 (但是,这并不意味着使用URL参数不RESTful的!)
如果它似乎没有硬性规定休息,你在正确的轨道上。
虽然又一次经常RESTful服务协议的XML,这是任何手段没有硬性规定无论是。
直接回答你的问题是我不知道 。
您对您的网络服务提供的信息不够准确得到它归类为一个RESTful Web服务。
REST是一种架构风格(不是设计或实现技术),这意味着你必须遵循的原则在软件把它归类为REST风格的架构:
- 具有明确定义和统一的接口的客户机/服务器
- 资源的统一标识
- 通过他们表示这些资源的操纵
- 自描述消息:每个消息描述如何处理数据
- 超媒体作为应用状态的引擎:状态之间的转换发生的以下链接
- 无状态
- 资源的缓存能力
- 分层系统
你必须做任何事情之前的RESTful咨询#1来源是Roy Fielding的博士论文 ,“那个谁发明了REST” :-)
注意休息不指定URL的方案,但也有关于REST的架构的URL方案,像一些常见的最佳做法, 那些Rails的使用 。
这一问题已经在这个网站以前多次回答。 你应该看看Fielding的论文中对REST的权威来源。 他的博客有一些有用的帖子了。
URI表示无关与休息,但看着你的,它看起来像你的服务可能RPC而不是REST。 如果你只有一个URI整个服务,你通过查询参数或标题拨打电话来,这是RPC,类似于SOAP。
REST中最重要的概念是,你的资源被发现,并通过超文本导航。 你的API必须是你的媒体类型的说明。 你的API中的唯一,单一的URI的入口点。
我不认为你会得到这样一个明确的答案。 REST和网络服务是很容易混淆的名词,现在你一起将它们结合起来。
REST可能意味着,
- 在严格的条件,则URL必须代表一个资源,并且适当的HTTP动词(GET / PUT / POST / DELETE)必须被使用。 在这里,我们有一个约定。 如果这意味着这它的拼写为休息。
- 只要它使用查询参数和形式后在请求任何HTTP或web协议。
- 任何HTTP协议。 该请求可以在一个XML或JSON。
Web服务也有多重意义,
- 它用来表示基于SOAP的SOA的调用。
- 然后介绍了REST风格的Web服务。 它基本上没有SOA SOAP调用。 我甚至看到人们使用精确的SOAP消息没有SOAP头。
- 有些人认为WADL(WSDL的当量)必须使用分类为Web服务,特别是在JAX-RS社区。