認識RESTful

REST,是Roy Thomas Fielding博士於2000年在他的博士論文中提出來的一種萬維網軟件架構風格。html

什麼是RESTful

REST的全稱是Representational State Transfer,中文含義爲表現層狀態變化。符合REST規範的設計,均可以稱爲RESTful設計。web

RESTful的設計哲學

RESTful的設計哲學主要將服務器提供的內容實體看做一個資源,並表如今URL上。瀏覽器

所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它能夠是一段文本、一張圖片、一首歌曲、一種服務,總之就是一個具體的實在。緩存

好比:服務器

/users/leeper

這個地址表明一個資源,對這個資源的操做,主要體如今HTTP請求的方法上,不是體如今URL上。
例如,對用戶的增刪查改多是這樣設計URL的:restful

POST  /user/add?username=leeper
GET   /user/remove?username=leeper
POST  /user/update?username=leeper
GET   /user/get?username=leeper

主要使用的請求方法是POST和GET,操做行爲主要體如今URL上。
在RESTful設計中,它是這樣的:網絡

POST     /user/leeper
DELETE   /user/leeper
PUT      /user/leeper
GET      /user/leeper

對於資源的具體表現形態,再也不表如今URL上了。架構

特色

來自維基百科:設計

  • 資源是由URI來指定
  • 對資源的操做包括獲取、建立、修改和刪除資源,這些操做正好對應HTTP協議提供的GET、POST、PUT和DELETE方法
  • 經過操做資源的表現形式來操做資源
  • 資源的表現形式則是XML或者HTML,取決於讀者是機器仍是人,是消費web服務的客戶軟件仍是web瀏覽器。固然也能夠是任何其餘的格式

優勢

來自維基百科:rest

  • 可更高效利用緩存來提升響應速度
  • 通信自己的無狀態性可讓不一樣的服務器的處理一系列請求中的不一樣請求,提升服務器的擴展性
  • 瀏覽器便可做爲客戶端,簡化軟件需求
  • 相對於其餘疊加在HTTP協議之上的機制,REST的軟件依賴性更小
  • 不須要額外的資源發現機制
  • 在軟件技術演進中的長期的兼容性更好

誤區

  • 避免URI包含動詞
  • 避免在URI中加入版本號

總結

  • 每個URI表明一種資源
  • 客戶端和服務器之間,傳遞這種資源的某種表現層
  • 客戶端經過四個HTTP動詞,對服務器端資源進行操做,實現"表現層狀態轉化"

參考:

相關文章
相關標籤/搜索