我是RESTful服务领域的新手。我一直在阅读有关REST的文章。我有很多疑惑。请帮我澄清这些疑惑。提前谢谢。
1)对于所有RESTful Web服务,是否有用于描述服务的WSDL / WADL?是否必须提供服务说明?如果没有描述,我怎么知道我必须沿HTTPRequest发送的数据及其结构?
我读过,请求内容可以是任何类型(XML,JSON,YAML等)。对于可以随请求发送的内容类型没有限制。如果没有描述,我怎么知道我应该发送的数据类型?
2)通过阅读文章,我得到的结论是RESTful服务主要用于CRUD操作类服务。针对不同操作的不同HTTP谓词。但是,如果您使用Web服务,它可以执行各种操作。例如,添加2个数字并不完全是CRUD操作。如果我对可以为我执行此操作的资源使用GET / POST,那么它是违反REST原则的吗?
3)如果你能指出我可以用于测试的任何公共RESTful网络服务,我可以尝试使用该服务,并了解服务的复杂程度。
提前致谢,
保罗
答案 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)