RESTful用于非面向资源的Web服务

时间:2013-01-03 11:29:13

标签: web-services rest soap

我全都是针对REST网络服务的,我的公司制定了一项政策来优先选择REST over SOAP。

但是,我需要公开一个不适合资源范例的Web服务。它本质上是一个计算,我需要发送大量参数(大约20个字段)并检索一个数字。

我考虑过使用HTTP POST并在请求体中发送JSON对象。这里的问题是,我的web服务支持SOAP-WS和REST,这种方法不属于任何这些类别。

我的问题是,这里的选项有哪些?我可以将其设置为RESTful WS吗?

3 个答案:

答案 0 :(得分:4)

正如您所提到的,当您在资源上公开CRUD操作时,REST是有意义的。通常这些资源会持久存储在某些数据库或存储机制中。

在你的情况下,我猜没有存储或资源(你提供一堆数字并获得结果,没有任何存储,是真的吗?)。因此,您无法将这样的WS称为“RESTful”。

据说REST更像是一种“哲学”。您可以拍摄自己喜欢的作品并使用它们。您实现POST的想法,使用您的输入接受JSON结构并返回带有结果的JSON听起来不错。您还可以发布“application/x-www-form-urlencoded”内容(常规表单提交,如果有意义,则将结果返回“text / plain”。

我们的想法是构建一个易于理解且易于操作的WS。与SOAP-WS完全相反。 ;)

答案 1 :(得分:0)

经过一番研究,我发现这篇文章与本次讨论非常相关: http://info.apigee.com/Portals/62317/docs/web%20api.pdf

答案 2 :(得分:0)

我认为没有理由不能成为RESTful。将特定计算运行视为具有自己标识的资源(/calculation/ID123);然后,您可以执行POST /calculation以创建新的,/calculation/ID123/paramA上的GET / PUT使用特定参数,然后在/calculation/ID123/result上获取以检索计算结果(或说明由于某种原因无法获得计算结果的说明。当然,/calculation上的GET将是您可以看到的已保存计算列表的检索,/calculation/ID123上的GET将检索上面概述的子资源的描述(以及其他任何其他内容)您要提供的信息),并且清除特定计算是DELETE。

拥有大量子资源和高度瞬态资源并没有错。需要记住的重要一点是,客户端不应该使用URL。 (我不知道内容协商在这种情况下是否如此有用;这实际上取决于我想的特定计算。)