2011-04-19 46 views
2

我是新来的RESTful服务的舞台。我一直在阅读关于REST的文章。我有很多疑问。请帮我清除这些疑惑。提前致谢。对RESTful Web服务有些怀疑?

1)对于所有REST风格的Web服务,是否会有用于描述服务的WSDL/WADL?服务描述是强制性的吗?如果没有描述,我怎么能知道我必须沿HTTPRequest发送的数据及其结构?

我读得像,请求内容可以是任何类型(XML,JSON,YAML等)。对于可以通过请求发送的内容类型没有限制。没有说明,我怎么能知道我应该发送的数据类型?

2)通过阅读文章,我得到了RESTful服务主要用于CRUD操作类服务的印象。针对不同操作的不同HTTP动词。但是如果你采用网络服务,它可以进行各种操作。例如,添加2个数字不完全是CRUD操作。如果我使用GET/POST的资源,可以为我做这个操作,那么它会违反REST原则? 3)如果您可以指向任何可用于测试的公共REST式Web服务,我可以尝试使用该服务并了解服务的复杂程度。

由于提前,
保罗

回答

4

有通常没有机器可读服务描述。您通常会通过阅读服务的文档知道要发送的内容。

REST不限于CRUD和PUT/GET/POST/DELETE方法不一定一样创建/检索/更新/删除。基于REST的服务可以完成任何基于SOAP的Web服务可以完成的任务。将GET请求发送到像http://example.com/add?3,5这样的URI是完全RESTful的。

您可以在http://www.programmableweb.com/apis/directory/1?protocol=REST找到REST服务列表。

+0

感谢您的回复。我从您提供的URL中检查了REST服务。我发现那里没有任何服务的描述。所以在客户端,我们将无法使用任何代码生成工具。创建请求并调用是由用户决定的。如果服务足够简单,这种方法是可以的。但是如果服务很复杂,拥有一个代码生成器不是很好吗? – 2011-04-26 11:46:02

+0

对于REST服务,代码生成器不像SOAP服务那样需要尽可能多,尽管代码生成有其自身的问题,但是它仍然很好。流行的REST服务,例如Facebook Graph API,确实提供了库。 – 2011-04-26 15:48:04

1

回答你的第一个问题:

WSDL/WADL不是强制的宁静web服务。另外,WSDL 1.1 HTTP绑定不足以描述宁静的web服务。

但是,可以使用WSDL 2.0来描述它。当客户和提供者对合同有相互理解时,应该使用Restful Web服务。

看一看:http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

二:是的,你几乎可以完成一切从CRUD操作。就像在之前的回答http://example.com/add?3,5中所述。是一个有效的粗俗。

0
  1. 没有WSDL/WADL文件。您获得HTTP协议(例如,GET,POST,UPDATE,DELETE),其他一切都由您决定。确保记录您的预期输入和输出。
  2. 不,RESTful Web服务不限于CRUD。对于你的添加服务,我会把它作为一个“加法器”资源来实现,它将输入2个数字作为输入。您可以将这些输入作为url路径的一部分(http://yourdomain.com/adder/1/2)或查询字符串params(http://yourdomain.com/adder?var1 = 2 & var2 = 2)或来自HTTP POST的输入。由你决定。