RPC伪装成REST是个坏主意吗?

时间:2008-12-22 09:34:18

标签: web-services rest rpc

我们的整个系统是围绕REST设计的,现在正在考虑如何将非常明显的RPC意图的进程映射到RESTful资源,而不使用URL中的动词。我们的远程过程调用用于在其他地方修改内容列表时重建我们的搜索索引。

我们正在考虑做的是:

POST / index_updates

<indexUpdate><contentId>123</contentId></indexUpdate>

本身没有任何问题,但气味是已创建的资源不会返回新创建的资源的URL,例如/ index_updates / 1234然后我们可以使用GET访问。

我们使用的索引引擎确实有一个日志机制,所以理论上我们可以将一个URL返回到index_update资源,以便允许GET检索资源,但说实话我们对资源不感兴趣因为这只不过是伪装的RPC。

所以我的问题是RESTful是否在结构或意图中表达。我觉得我所概述的结构是宁静的,但目的不是。

有没有人有意见或建议?

谢谢,

克里斯

3 个答案:

答案 0 :(得分:5)

使用正确的工具完成工作。在这种情况下,看起来正确的工具似乎是纯粹的远程过程调用,并且没有理由假装它是REST。

答案 1 :(得分:4)

您可能从POST / index_updates调用返回新资源标识符的一个原因是监视操作的状态。

  

POST / index_updates
  &LT;内容识别&GT; 123&LT; /内容识别&GT;

201 Created
Location: /index_updates/a9283b734e
  

GET / index_jobs / a9283b734e

 <index_update><percent_complete>89</percent_complete></index_update>

答案 2 :(得分:-2)

这显然是一个主观领域,但是GET PUT POST DELETE是一个足够丰富的词汇来描述任何东西。当我去非英语国家的亚洲国家时,我只是指出,他们知道我的意思,因为我不会说这种语言... 很难真正与之交谈有人...

将RPC伪装成REST并不是一个坏主意,因为这是整个练习。就我个人而言,我认为SOAP受到了抨击和讨厌,而事实上它有很多优点(并且使用HTTP压缩,HTTP / SSL和cookie,还有更多优势)......而且你的应用程序实际上是公开客户端调用的方法。为什么要将其转换为REST?我从未被说服过。 SOAP允许您使用我们熟悉和喜爱的语言,即编程接口的语言。

但是要回答你的问题,将RPC伪装成REST是一个坏主意吗?不。将RPC伪装成REST并转换为四个基本操作就是关于它的内容。你是否觉得这很酷是一个不同的故事。