2011-07-12 46 views
0

谷歌翻譯API v2是純GET的風格,他們只在https://www.googleapis.com/language/translate/v2是谷歌翻譯api v2一個RESTful architeture?

所以基本上工具的所有變體將被稱爲像這樣https://www.googleapis.com/language/translate/v2?parameters

他們聲稱該服務有一個網址(或一個資源)要成爲RESTful(http://code.google.com/apis/language/translate/v2/using_rest.html),因爲它基於簡單的GET網址。

但嚴格來說它實際上是一個RESTful架構?

因爲擁有一個基於簡單GET網址的服務與REST風格並不相似嗎?

回答

1

我個人只會將任何服務作爲REST公開,只要我可以將服務建模爲資源導向,在大多數情況下,這些服務就是將數據公開爲資源。在谷歌翻譯API的情況下,它給了更多的RPC感覺,而不是它暴露的資源。 因此,即使谷歌可能稱之爲基於REST(因爲它基於簡單的GET URL),我不會將其視爲基於REST的服務。此外,如果您查看URL,則不會標識資源,而是看起來更像是您在查詢字符串中傳遞值並根據這些值獲得結果的端點。

+0

確定基本上如果我有一個服務是基於一個簡單的GET URL提供參數在該網址和接收數據爲JSON(有點像谷歌API的結構)我可以聲稱它是一個寧靜的架構? – jaytufch

+0

其實這是非常主觀的,在REST本身中有從簡單的URL映射到資源到稱爲超鏈接的各種級別,它是一種金字塔。你的服務可以是這個金字塔中的任何特定層,但是是的,你可以在任何級別調用這個REST完成:) – Ankur

1

如果你想將它的RESTful它應滿足Fielding的標準

  • 客戶端 - 服務器 - 從數據存儲設備中分離UI

  • 無狀態服務器 - 提高可靠性和可擴展性

  • 客戶端緩存 - 減少一些網絡流量

  • Uniform Interface - deco uples實現從他們提供的

  • 分層系統服務 - 意味着每個組件只與那些略低於或略高於有關它

  • 代碼點播 - 允許客戶端功能,可以通過下載小程序擴展或腳本

此外,它應該有可尋址的資源,表示方向,自描述性消息,無狀態服務器和緩存性。

那麼如果API只是一個帶有多個參數的GET調用呢?問題是:GET(帶參數)冪等和安全嗎?那麼我認爲是。這是一個「只讀」界面。你永遠不會改變服務器上的狀態。所以GET對於給定的查詢參數是安全且冪等和可緩存的。

對我來說這是RESTful。

現在,當人們使用GET發佈的東西......這就是你應該反對的地方。

+0

+1,就像我在這裏說的:http://stackoverflow.com/questions/6643658/are-all-網絡服務 - 自動的,寧靜的Web服務/ 6649010#評論-7873165 – Szocske