1

我完全支持 REST Web 服务,而且我的公司制定了一项政策,优先选择 REST 而不是 SOAP。

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

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

我的问题是,这里有什么选择?我可以使它适合 RESTful WS 吗?

4

3 回答 3

4

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

在您的情况下,我想没有存储或资源(您提供了一堆数字并返回结果,没有任何内容被存储,这是真的吗?)。因此,您将无法真正将这样的 WS 称为“RESTful”。

话虽如此,REST 更像是一种“哲学”。你可以拿走你喜欢的东西并使用它们。您实现 POST、将 JSON 结构与您的输入一起接收并返回带有结果的 JSON 的想法听起来不错。您还可以发布“ application/x-www-form-urlencoded ”内容(常规表单提交并将结果返回为“text/plain”,如果这有意义的话。

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

于 2013-01-03T11:48:42.847 回答
0

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

于 2013-01-04T09:38:56.390 回答
0

我看不出为什么不能是 RESTful 的。将特定的计算运行视为具有自己身份的资源 ( /calculation/ID123);然后,您可以执行 POST 以/calculation创建一个新参数,GET/PUT on/calculation/ID123/paramA以使用特定参数,并 GET on/calculation/ID123/result以检索计算结果(或说明计算结果由于某种原因不可用的描述) . 当然,GET on/calculation将检索您可以查看的已保存计算列表,GET on/calculation/ID123将检索上述子资源的描述(以及您想要提供的任何其他信息),并清除具体计算是一个DELETE。

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

于 2013-01-04T13:27:51.923 回答