Restful設計規範,先後端分離的優缺點對比

Restful

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

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

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

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

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

 

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

一 、域名:後端

將api部署在專用域名下:api

http://api.example.com

或者將api放在主域名下瀏覽器

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

2、 版本bash

將API的版本號放在url中。服務器

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

3、 路徑

路徑表示API的具體網址。每一個網址表明一種資源。 資源做爲網址,網址中不能有動詞只能有名詞,通常名詞要與數據庫的表名對應。並且名詞要使用複數。

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

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

4、 使用標準的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

5、 過濾信息

若是資源數據較多,服務器不能將全部數據一次所有返回給客戶端。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

6、 狀態碼(先後端分離的開發都要用到狀態碼)

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

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



7、 自定義錯誤信息

通常來講,服務器返回的錯誤信息,以鍵值對的形式返回。

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

針對不一樣結果,服務器向客戶端返回的結果應符合如下規範。

#返回商品列表 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
 
9、 使用鏈接關聯相關資源
在返回響應結果時提供連接其餘API的方法,使客戶端很方便的獲取相關聯的信息。
10、 其餘
服務器返回的數據格式,應該儘可能使用JSON


先後端分離的優勢

 

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

 

先後端分離的缺點

1. 先後端學習門檻增長(前端要處理的數據變多了,後端傳遞數據要知足新的規範)2. 數據依賴致使文檔重要性增長3. 前端工做量加大4. SEO的難度加大5. 後端開發模式遷移增長成本(以前依賴模板開發的項目)

相關文章
相關標籤/搜索