2011-04-19 44 views
2

我是新來的RESTful服務的舞臺。我一直在閱讀關於REST的文章。我有很多疑問。請幫我清除這些疑惑。提前致謝。對RESTful Web服務有些懷疑?

1)對於所有REST風格的Web服務,是否會有用於描述服務的WSDL/WADL?服務描述是強制性的嗎?如果沒有描述,我怎麼能知道我必須沿HTTPRequest發送的數據及其結構?

我讀得像,請求內容可以是任何類型(XML,JSON,YAML等)。對於可以通過請求發送的內容類型沒有限制。沒有說明,我怎麼能知道我應該發送的數據類型?

2)通過閱讀文章,我得到了RESTful服務主要用於CRUD操作類服務的印象。針對不同操作的不同HTTP動詞。但是如果你採用網絡服務,它可以進行各種操作。例如,添加2個數字不完全是CRUD操作。如果我使用GET/POST的資源,可以爲我做這個操作,那麼它會違反REST原則? 3)如果您可以指向任何可用於測試的公共REST式Web服務,我可以嘗試使用該服務並瞭解服務的複雜程度。

由於提前,
保羅

回答

4

有通常沒有機器可讀服務描述。您通常會通過閱讀服務的文檔知道要發送的內容。

REST不限於CRUD和PUT/GET/POST/DELETE方法不一定一樣創建/檢索/更新/刪除。基於REST的服務可以完成任何基於SOAP的Web服務可以完成的任務。將GET請求發送到像http://example.com/add?3,5這樣的URI是完全RESTful的。

您可以在http://www.programmableweb.com/apis/directory/1?protocol=REST找到REST服務列表。

+0

感謝您的回覆。我從您提供的URL中檢查了REST服務。我發現那裏沒有任何服務的描述。所以在客戶端,我們將無法使用任何代碼生成工具。創建請求並調用是由用戶決定的。如果服務足夠簡單,這種方法是可以的。但是如果服務很複雜,擁有一個代碼生成器不是很好嗎? – 2011-04-26 11:46:02

+0

對於REST服務,代碼生成器不像SOAP服務那樣需要儘可能多,儘管代碼生成有其自身的問題,但是它仍然很好。流行的REST服務,例如Facebook Graph API,確實提供了庫。 – 2011-04-26 15:48:04

1

回答你的第一個問題:

WSDL/WADL不是強制的寧靜web服務。另外,WSDL 1.1 HTTP綁定不足以描述寧靜的web服務。

但是,可以使用WSDL 2.0來描述它。當客戶和提供者對合同有相互理解時,應該使用Restful Web服務。

看一看:http://www.ibm.com/developerworks/webservices/library/ws-restwsdl/

二:是的,你幾乎可以完成一切從CRUD操作。就像在之前的回答http://example.com/add?3,5中所述。是一個有效的粗俗。

0
  1. 沒有WSDL/WADL文件。您獲得HTTP協議(例如,GET,POST,UPDATE,DELETE),其他一切都由您決定。確保記錄您的預期輸入和輸出。
  2. 不,RESTful Web服務不限於CRUD。對於你的添加服務,我會把它作爲一個「加法器」資源來實現,它將輸入2個數字作爲輸入。您可以將這些輸入作爲url路徑的一部分(http://yourdomain.com/adder/1/2)或查詢字符串params(http://yourdomain.com/adder?var1 = 2 & var2 = 2)或來自HTTP POST的輸入。由你決定。