最近一段時間,一直在低頭敲代碼,開發平臺對外交互的API接口,功能已經大致完成了,回過頭來看看本身的接口設計文檔,不勝感慨,想當初本身也是爲「接口名稱」想破了腦殼,各類百度英文。今天一位老同事走過來看了一眼,隨口說了一句,你這接口一點Restful風格沒有。。。看一眼你的接口命名規則就知道,我只能點點頭,也是。html
以前也有接觸過REST接口設計風格,時間長了,終究仍是都還回去了。今天也是準備把這塊知識點拾掇起來,再從新認識一下,感興趣的同窗能夠一塊兒來了解了解。json
先簡單說說什麼是Restful API安全
RESTFUL是一種網絡應用程序的設計風格和開發方式,基於HTTP,可使用XML格式定義或JSON格式定義。服務器
RESTFUL是一種架構風格,定義了一組規則和約束,符合REST風格的API接口稱做爲Restful API。網絡
REST(Representational State Transfer)中文翻譯過來能夠理解爲「表現層狀態轉化」架構
主要特色:
1.資源spa
REST全稱是表現層狀態轉化,那究竟指的是什麼的表現? 其實指的就是資源,現實網絡中各類各樣信息的傳遞,交互,咱們能夠將這些信息抽象爲資源,好比一張圖片,一段文本,一個文件等。翻譯
在網絡中咱們使用「統一資源標識」即URI(Uniform Resource Identifier)來標識一個資源,相似於給你一張身份證,你們根據身份證就能知道你是誰。設計
REST風格能夠說是「面向資源」的,它請求的是一個資源,該資源每每用一個名詞表示,不會出現動詞(也是區別於RPC風格的一點)。orm
2.表現層
REST全稱是表現層狀態轉化,既然是面向資源,爲何不叫「資源狀態轉化」呢?
咱們會發現每每在網絡中交互的都是xml,json,html等格式數據,這些格式能夠理解爲資源對外表現的一種形式,這也就說明了實際上網絡中交互的是「資源的表現」,並不僅是單純的資源自己。
3.狀態的轉化
現實網絡中,每每是客戶端發起一個請求,服務端進行相應的迴應。在這個過程當中,勢必涉及到數據和狀態的變化。而互聯網通訊協議HTTP,是一個無狀態協議。這也就意味着,資源的狀態都保存在服務器端。由客戶端發起POST,PUT等操做,引發服務端對資源進行操做,發生「狀態的轉化」。
4.資源的連接(超媒體概念)
資源的連接能夠理解爲從一個資源跳轉到另外一個資源
實際應用中咱們發起對一個接口的請求,接口會返回一些數據,這些數據可能除了圖片,json字符串等,有時候還會包含一個地址,這個地址每每是對下一個資源請求的地址。
5.HTTP動詞
GET-查詢 安全,冪等性
POST-新增或者更新 非安全,非冪等性
PUT(客戶端提供改變後的完整資源)-更新 非安全,冪等性
PATCH(客戶端提供改變的屬性)-更新 非安全,冪等性
DELETE-刪除 非安全,冪等性
安全性:操做不會改變資源的狀態
冪等性:操做一次和操做N次,對資源改變的效果是同樣的。
綜合上面的解釋,咱們總結一下什麼是RESTful架構:
(1)每個URI表明一種資源;
(2)客戶端和服務器之間,傳遞這種資源的某種表現層;
(3)客戶端經過四個HTTP動詞,對服務器端資源進行操做,實現"表現層狀態轉化"。
通過上面的瞭解,回過頭來再看看我以前設計的接口URL,好比:htpp://localhost/Person/GetAll。真是被老同事一語中的哇。。。