2012-05-28 109 views
3

我正在編寫一個C++ API用作Web服務。 API中的函數將images/path_to_images作爲輸入參數,處理它們,並給出一組不同的images/paths_to_images作爲輸出。我正在考慮實現一個REST接口,以便開發人員可以將這個API用於他們的項目(獨立於他們希望工作的任何語言)。但是,我知道只有當您想要查詢或操作的數據集合時,REST纔是好的,但這並非如此。 [收集我是操縱提供的數據不同的功能。]REST vs RPC用於C++ API

那麼,是不是更好地爲我實現一個RPC接口對於這一點,或者可以在此使用REST本身做什麼?

回答

1

像lcfseth,我也去休息。 REST確實是基於資源的,在你的情況下,你可能會認爲沒有資源需要處理。但是,這不完全正確,系統中的圖像轉換器就是資源。您將圖像張貼到它並返回新圖像。所以我只需要創建一個URL,例如:

POST http://example.com/image-converter 

您發表圖片到它,它會返回一些陣列的路徑,新的圖像。

潛在的,你也可以有:

GET http://example.com/image-converter 

它可以告訴你的圖像轉換的狀態(假設它是一個耗時的過程)。

這樣做的好處是您重新使用了開發人員熟悉的HTTP動詞,界面幾乎是自我記錄的(儘管當然您仍然需要記錄POST接受和返回的格式呼叫)。使用RPC,你必須定義新的動詞並記錄它們。

+0

關於我將不得不對C++代碼做什麼建議,以便在我執行POST操作時立即開始處理?我如何鏈接你的例子中的'http:// example.com/image-converter'到我得到的C++代碼? –

1

REST使用常用的操作得到了REST API,POST,DELETE,HEAD,PUT。如你所想,這是非常面向數據的。然而,對數據類型沒有限制,也沒有數據大小的限制(無論如何我都不知道)。因此可以在幾乎所有環境中使用它(包括髮送二進制數據)。 REST的優點之一是Web瀏覽器可以理解REST,而用戶不需要有專門的應用程序來發送請求。

RPC提供了更多的可能性,也可以使用。例如,您可以定義自定義操作。 不知道你打算做什麼需要這麼多的力量。

就我個人而言,我會去與REST。

這裏是你可能想閱讀的鏈接: http://www.sitepen.com/blog/2008/03/25/rest-and-rpc-relationship/