每個人心中都有一套 RESTful API
當年還在念書的時候,不免俗的看了 Roy Fielding 寫的相關論文。
而論文中所提到設計風格,則隨後因為 Rails
而漸漸眾所皆知。
學習實作
在查了許多關於如何實作的資料之後,發現除了論文中所提的設計風格重點之外,其中最常搭配的就是 Rails
的實作。
許多人會學習第一次學習實作 RESTful API
的第一個版本便是 Rails 的實作版本。
並且將它視為一個標準,當有另一個實作版本提出時某部分的細節不符合 Rails 的版本,便會遭到質疑。
標準?原則!
但要特別注意的是 REST
從來就不是標準,它也不像 RPC
及 SOAP
等有標準規範可以參考,也不會有任何一個實作是標準。
它僅是一個設計風格、是一個原則,只要設計出的 API 有達到 REST
其中所提到的約束,就能稱之為 RESTful API。
難易度
雖然使用 REST 設計風格來實作 API 現在還是蔚為風潮,但是它並沒有辦法這麼容易實作,在有些應用上會有些設計的難處,所以有些大廠提供的 API
都會稱為 REST-like
,它像是 REST
但不是 REST
。
關於 Verbs
大致上會有,HTTP Method
數量有限不好隨易擴充,因為會違反 RFC
的標準,另外還有實作語言支援度的問題。而 URI
的來說,通常一組 URI
都視為一組資源的操作,有可能在一寫複雜的需求中會不好設計。
例如 使用者忘記密碼重新設定
的功能如果要設計及實作的話,很可能就會超出了限制範圍,雖然都是對 /user
這個資源操作,但很有可能你所需要的操作不符合 Verb
或是 URI
。
最後 Hypermedia
是表明敘述資源本身,以及如何前往其他相關的資源,等等操作方法。
以上。