ScarShow

< IS >

每個人心中都有一套 RESTful API

當年還在念碩士的時候,不免俗的看了 Roy Fielding 所提及 Representational State Transfer Architectural Style 的論文。

而論文中所提到設計風格,則因為 Rails 而發揚光大。

學習實作

在查了許多關於如何實作的資料之後,發現除了論文中所提的設計風格重點之外,其中最常搭配的就是 Rails 的實作。

許多人會學習第一次學習實作 RESTful API 的第一個版本便是 Rails 的實作版本。

並且將它視為一個標準,當有另一個實作版本提出時某部分的細節不符合 Rails 的版本,便會遭到質疑。

標準?原則!

但要特別注意的是 REST 從來就不是標準,它也不像 RPCSOAP 等有標準規範可以參考,也不會有任何一個實作是標準。

它僅是一個設計風格、是一個原則,只要設計出的 API 有達到 REST 其中所提到的約束,就能稱之為 RESTful API。

難易度

雖然使用 REST 設計風格來實作 API 現在還是蔚為風潮,但是它並沒有辦法這麼容易實作,在有些應用上會有些設計的難處,所以有些大廠提供的 API 都會稱為 REST-like,它像是 REST 但不是 REST

關於 Verbs 大致上會有,HTTP Method 數量有限不好隨易擴充,因為會違反 RFC 的標準,另外還有實作語言支援度的問題。而 URI 的來說,通常一組 URI 都視為一組資源的操作,有可能在一寫複雜的需求中會不好設計。

例如 使用者忘記密碼重新設定 的功能如果要設計及實作的話,很可能就會超出了限制範圍,雖然都是對 /user 這個資源操作,但很有可能你所需要的操作不符合 Verb 或是 URI

最後 Hypermedia 是表明敘述資源本身,以及如何前往其他相關的資源,等等操作方法。

以上。

References