RESTful API 可以分成 RESTful 與 API 來看:

API 是什麼

API,全名 Application Programming Interface (應用程式介面),簡單來說,是品牌開發出的一種接口,讓第三方可以額外開發、應用在自身的產品上的系統溝通介面。

RESTful 是什麼

REST,全名 Representational State Transfer ( 具象狀態傳輸 ),他是一種是一種軟體架構風格(並非標準),RESTful 只是轉為形容詞,像是 beauty ( 美麗 ) 這名詞,轉成形容詞是 beautiful,設計為 REST 的系統就可以稱為 RESTful。

REST 目的是幫助在世界各地不同軟體、程式在網際網路中能夠互相傳遞訊息。每一個網頁都可視為一個資源(resource)提供使用者使用,以資源操作的概念 (指的是對某項資源,譬如 User、Post 等,指派 Show、Edit 等動作),結合 url path 與 HTTP Method ,目的是使 url path 更為簡潔、容易被理解,除了介面簡潔之外,尚有增加快取 cache 效率、提升 api 活用性等優點。換句話說, REST 風格可以單從 HTTP request 就能看出如何操作伺服器的資料。而你可以透過 URL,也就是這些資源的地址,來取得這些資源並在你的瀏覽器上使用。

REST 的一個最重要的觀念就是 resources (特定資訊的資源),每一個 resource 由一個 global identifier (即 URI ) 所表示。為了操作這些 resources,網路的 components (即 clients 跟 servers) 透過標準化的介面 (即 HTTP) 來溝通並交換這些 resources 的 representations (即實際上傳達資訊的文件)。

Resource Representational State Transfer 若是把各個單字拆開來解釋的話即如下:

REST 提出了一些設計概念和準則:

  1. 網路上的所有事物都被將被抽象成資源 (resource)
  2. 每個資源對應一個唯一的 resource identifier
  3. 通過通用的介面 (generic connector interface) 對資源進行操作
  4. 對資源的各種操作不會改變 resource idetifier
  5. 所有的操作都是無態 (stateless) 的

對照到 web services 上來說: