有关RESTful Web服务的疑虑?

时间:2011-04-19 07:17:47

标签: web-services rest sample

我是RESTful服务领域的新手。我一直在阅读有关REST的文章。我有很多疑惑。请帮我澄清这些疑惑。提前谢谢。

1)对于所有RESTful Web服务,是否有用于描述服务的WSDL / WADL?是否必须提供服务说明?如果没有描述,我怎么知道我必须沿HTTPRequest发送的数据及其结构?

我读过,请求内容可以是任何类型(XML,JSON,YAML等)。对于可以随请求发送的内容类型没有限制。如果没有描述,我怎么知道我应该发送的数据类型?

2)通过阅读文章,我得到的结论是RESTful服务主要用于CRUD操作类服务。针对不同操作的不同HTTP谓词。但是,如果您使用Web服务,它可以执行各种操作。例如,添加2个数字并不完全是CRUD操作。如果我对可以为我执行此操作的资源使用GET / POST,那么它是违反REST原则的吗?

3)如果你能指出我可以用于测试的任何公共RESTful网络服务,我可以尝试使用该服务,并了解服务的复杂程度。

提前致谢,
保罗

3 个答案:

答案 0 :(得分: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服务列表。

答案 1 :(得分:1)

回答你的第一个问题:

WSDL / WADL对于restful webservices不是必需的。此外,WSDL 1.1 HTTP绑定不足以描述宁静的Web服务。

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

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

第二:是的,你几乎可以通过粗暴行动来完成所有事情。如前面的回答http://example.com/add?3,5中所述。是一个有效的问题。

答案 2 :(得分:0)

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