使RESTful Web服務更加實用的10個建議

發表於2012-04-10

提示:隨著RESTful Web services的流行程度不斷地上升,開發人員需要知道如何避免開發中的陷阱以及讓開發出來的Web service達到自己能做到的最好程度。

過去的幾年裡,我們看到RESTful Web services變得流行起來是有好些原因的。這裡有十個技巧你應該要做的,它們能讓你的RESTful Web Service更加高水準並且被其他開發人員使用起來更加簡易。

0.不要尋找一個官方的“REST 標準”

REST是一個概念,不是一個標準。因此沒有任何的要求讓你的 RESTful Web service在一個特定的方式下執行。話雖如此,但……

1.還是堅持一些標準

……你的 RESTful Web services 應該遵循至少一些標準!例如使用者認證的OAuth協議、資料交換的JSON和XML、網路傳輸和自控制的HTTP協議還有URI標準。如果你想要一個更加完整的包,開放資料協議OData是一個有效的選擇(因為它夠大?)。因為沒有人說“REST必須堅持這些標準”這樣的話,並不意味著你就應該按照自己的意願來。

2.確保你的文件是完美無瑕疵的

使用 SOAP 協議的WSDL(Web Service 定義語言)系統,如果你有一個基於WSDL、可以自動生成程式碼的工具,那麼開發Web Service是相當簡單的。但如果用 REST ,由於services不需要嚴格的定義,並且它們執行在被稱為適當地正確工作的理念上。這意味著service的文件必須要非常嚴謹。如果你要開發一個Web Service一定要確保你的文件百分百的正確。

3.提供 JSON 輸出

JSON 已經迅速的變成web上的重要標準。首先,它很方便,因為它可以很容易地讓JavaScript以最少的編碼量來使用WebService。現在有很多庫可以讓服務端與客戶端的JSON互動工作的非常好。

4.不要漏掉 XML

說到輸出,XML 依然像往常一樣非常重要。為什麼要同時支援 XML 和 JSON 呢?因為並不是所有的系統都能使用 JSON的,但如果一個系統能被稱為 Web Service ,那麼它就一定會被規定去處理XML。現在有成堆的遺留系統,舉個例子,它是用XML工作而不是JSON。並且不是所有開發人員都想去mixing和匹配JSON跟XML的。因此要確保你的Web service系統支援這兩種格式。通過HTTP請求頭的“Accepts”引數來做這種支援而不是通過不同的包含引數的 service URL 來做。

5.理解 HTTP 動詞

REST Web services 其中一個很核心關鍵的是HTTP協議已經定義好的一大塊功能。而這其中最基本的一部分就是 HTTP動詞,例如 GET、POST 。而這些基本功能在REST中已經被很好地、充分地理解,一些想法仍然不斷地湧現,例如使用打補丁的方式更新實體中一些特定屬性而不是整個實體。

6.理解 URI 路由的重要性

RESTful Web services 在很大程度上是通過URI來決定幹什麼的。舉個例子,在一次 GET 請求中,典型的URI路徑會包含一個實體的主鍵值(或者其他標識鍵值)來檢索獲取實體的資料。例如“http://www.example.com/service/entityname/76″ 將檢索名字為 entityname, 主鍵值為 76 的實體。使用 RESTWeb services,URI 不僅是一種訪問service的方式,還是控制service和作為傳達你的需求的訊號載體。

7.在版本管理下進行更新維護

一件很誘人的事是你只需對唯一一個版本的service做更新維護。但真的不要這樣做!確保你每一次釋出更新後都新開一個分支版本來維護。最簡單、最常見的辦法是讓你的service URI 帶上版本號,通常是路徑的一部分。人們最需要的一件事就是使用更新後的軟體沒有任何新的問題或警告出現。

8.與你的使用者保持聯絡

因為使用者不會主動發現你的更新,因此你和你的使用者保持聯絡就顯得十分重要了。例如,當你為你的service釋出一個新的版本時,你應該給每一個使用者發一封郵件讓他們知道,以及提供舊版本的缺陷資訊。

9.提供示例程式碼

對你的使用者來說你要做的最好的一件事之一就是給他們提供示例程式碼。確保你給出的程式碼至少包含以下幾個主要的開發語言:Java、.NET、JavaScript、Ruby還有Python。如果有必要的話,僱傭一個顧問將這些程式碼放在一起。因為它對於你的 service 能否被採用是絕對重要的。還要確保你的許可協議可以讓你的使用者沒有任何風險影響地使用你的示例程式碼,例如可以使用 MIT 或 BSD 許可協議。

英文原文

相關文章