C++ API的REST与RPC比较

3
我正在编写一个C++ API,用作Web服务。API中的函数以图像/图像路径作为输入参数进行处理,并提供不同的图像/路径作为输出。我考虑实现REST接口,以便开发人员可以在其项目中使用该API(独立于他们想使用的语言)。但是,我了解到REST仅在您需要查询或操作数据集合时才很好,而这并不完全适用于此处的情况。 [我拥有的集合是不同的函数,它们操作提供的数据。]
因此,对于这种情况,最好实现RPC接口,还是可以使用REST本身来完成呢?
3个回答

1

REST使用常见的操作GET、POST、DELETE、HEAD、PUT。正如你所想象的那样,这非常数据导向。然而,对于数据类型没有限制,也没有数据大小的限制(至少我不知道有)。因此,它可以在几乎所有情况下使用(包括发送二进制数据)。 REST的一个优点是Web浏览器理解REST,您的用户不需要专门的应用程序来发送请求。

RPC提供了更多的可能性,也可以使用。例如,您可以定义自定义操作。不确定您是否需要那么多的功能。

个人而言,我会选择REST。

这里有一个链接,您可能想阅读: http://www.sitepen.com/blog/2008/03/25/rest-and-rpc-relationship/


1
像lcfseth一样,我也会选择REST。REST确实是基于资源的,在您的情况下,您可能认为没有资源可处理。然而,这并不完全正确,您系统中的图像转换器就是资源。您可以将图像POST到它,并返回新的图像。因此,我会简单地创建一个URL,例如:
POST http://example.com/image-converter

你可以将图片POST到它,然后它会返回一个包含新图片路径的数组。
潜在地,你也可以有:
GET http://example.com/image-converter

如果图像转换是一个耗时的过程,可以使用该方法告诉您其状态。

这样做的优点是您可以重复使用开发人员熟悉的HTTP动词,接口几乎是自文档化的(当然,您仍然需要记录POST调用所接受和返回的格式)。使用RPC,您将不得不定义新的动词并对其进行文档化。


有什么建议可以让我的C++代码在我执行POST操作后立即开始处理?我该如何将你的示例中的http://example.com/image-converter链接到我已有的C++代码中? - Giridhar Murali

-1

他的问题是:我应该使用REST还是RPC? - laurent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接