Restful設計規范,前后端分離的優缺點對比


Restful

REST是設計風格而不是標准。是指客戶端和服務器的交互形式。我們需要關注的重點是如何設計REST風格的網絡接口。

  • REST的特點:
  • 具象的(目標)。一般指表現層,要表現的對象就是資源。比如,客戶端訪問服務器,獲取的數據就是資源。比如文字、圖片、音視頻等。

  • 表現(目標實體):資源的表現形式。txt格式、html格式、json格式、jpg格式等。瀏覽器通過URL確定資源的位置,但是需要在HTTP請求頭中,用Accept和Content-Type字段指定,這兩個字段是對資源表現的描述。

  • 狀態轉換(動作):客戶端和服務器交互的過程。在這個過程中,一定會有數據和狀態的轉化,這種轉化叫做狀態轉換。其中,GET表示獲取資源,POST表示新建資源,PUT表示更新資源,DELETE表示刪除資源。HTTP協議中最常用的就是這四種操作方式。

    • RESTful架構:
    • 每個URL代表一種資源;
    • 客戶端和服務器之間,傳遞這種資源的某種表現層;
    • 客戶端通過四個http動詞,對服務器資源進行操作,實現表現層狀態轉換。

 

如何設計符合RESTful風格的API:

一 、域名:

將api部署在專用域名下:

http://api.example.com

或者將api放在主域名下

http://www.example.com/api/

二、 版本

將API的版本號放在url中。

http://www.example.com/api/v1.0

三、 路徑

路徑表示API的具體網址。每個網址代表一種資源。 資源作為網址,網址中不能有動詞只能有名詞,一般名詞要與數據庫的表名對應。而且名詞要使用復數。

正確示例: http://www.example.com/api/v1.0/goods

錯誤示例:  http://www.example.com/app/getgoods     #  包含動詞

四、 使用標准的HTTP方法

對於資源的具體操作類型,由HTTP動詞表示。 常用的HTTP動詞有四個。

GET     SELECT :從服務器獲取資源。
POST    CREATE :在服務器新建資源。
PUT     UPDATE :在服務器更新資源。
DELETE  DELETE :從服務器刪除資源。

示例:

#獲取指定商品的信息 GET http://www.example.com/goods/ID #新建商品的信息 POST http://www.example.com/goods #更新指定商品的信息 PUT http://www.example.com/goods/ID #刪除指定商品的信息 DELETE http://www.example.com/goods/ID

五、 過濾信息

如果資源數據較多,服務器不能將所有數據一次全部返回給客戶端。API應該提供參數,過濾返回結果。 實例:

#指定返回數據的數量 http://www.example.com/goods?limit=10 #指定返回數據的開始位置 http://www.example.com/goods?offset=10 #指定第幾頁,以及每頁數據的數量 http://www.example.com/goods?page=2&per_page=20

六、 狀態碼(前后端分離的開發都要用到狀態碼)

服務器向用戶返回的狀態碼和提示信息,常用的有:

200 OK :服務器成功返回用戶請求的數據 201 CREATED :用戶新建或修改數據成功。 202 Accepted:表示請求已進入后台排隊。 400 INVALID REQUEST :用戶發出的請求有錯誤。 401 Unauthorized :用戶沒有權限。 403 Forbidden :訪問被禁止。 404 NOT FOUND :請求針對的是不存在的記錄。 406 Not Acceptable :用戶請求的的格式不正確。 500 INTERNAL SERVER ERROR :服務器發生錯誤。



七、 自定義錯誤信息

一般來說,服務器返回的錯誤信息,以鍵值對的形式返回。

{
    error:'Invalid API KEY' }
 
八、 響應結果

針對不同結果,服務器向客戶端返回的結果應符合以下規范。

#返回商品列表 GET http://www.example.com/goods #返回單個商品 GET http://www.example.com/goods/cup #返回新生成的商品 POST http://www.example.com/goods #返回一個空文檔 DELETE http://www.example.com/goods
 
九、 使用連接關聯相關資源
在返回響應結果時提供鏈接其他API的方法,使客戶端很方便的獲取相關聯的信息。
十、 其他
服務器返回的數據格式,應該盡量使用JSON


前后端分離的優點

 

1. pc/app/pad 多端適應
2. SPA開發模式的開始流行
3. 前后端開發職責不清
4. 前端一直配合后端,能力受限
5. 開發效率問題,前后端相互等待
6. 后台開發語言和模板高度耦合,導致開發語言依賴嚴重

 

前后端分離的缺點

1. 前后端學習門檻增加(前端要處理的數據變多了,后端傳遞數據要滿足新的規范)
2. 數據依賴導致文檔重要性增加
3. 前端工作量加大
4. SEO的難度加大
5. 后端開發模式遷移增加成本(之前依賴模板開發的項目)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM