Restful簡單理解

Resource Representational State Transfer   直接翻譯:表現層狀態轉移html

簡單歸納:

URL:定位資源api

HTTP請求方式:(GET POST DELETE PUT)描述操做bash

請求狀態碼:描述結果服務器


看url就知道要什麼restful

看http method就知道幹什麼網絡

看http status code就知道結果如何架構


簡介版

REST描述的是在網絡中client和server的一種交互模式.異步

在Server提供的RESTful API中,url只使用名詞來指定資源url

資源是REST架構或者整個網絡處理的核心.spa

經過HTTP請求方式來實現資源的狀態扭轉.

Server和Client之間傳遞某資源的一種方式,用JSON或者其餘方式

用HTTP Status Code傳遞Server的狀態信息.最多見的200表示成功,500表示Server內部錯誤

Web端和Server只使用上述定義的API來傳遞數據和改變數據狀態。格式通常是JSON。iOS和Android同理可得。因而可知,Web,iOS,Android和第三方開發者變爲平等的角色經過一套API來共同消費Server提供的服務。

Transfer:通俗來說就是:資源在網絡中以某種表現形式進行狀態轉移。分解開來:

Resource:資源,即數據(前面說過網絡的核心)。好比 newsfeed,friends等;

Representational:某種表現形式,好比用JSON,XML,JPEG等;

State Transfer:狀態變化。經過HTTP動詞實現。

image.jpeg

略詳細版

參考

  1. 協議
    API與用戶的通訊協議,老是使用HTTPs協議

  2. 域名 應該儘可能將API部署在專用域名之下 https://api.example.com 若是肯定API很簡單,不會有進一步擴展,能夠考慮放在主域名下
    https://example.org/api/

  3. 版本

    應該將API的版本號放入URL
    https://api.example.com/v1/ 另外一種作法是:將版本號放在HTTP頭信息中,

  4. 路徑
    https://api.example.com/v1/zoos https://api.example.com/v1/animals https://api.example.com/v1/employees

  5. 動詞 對於資源的具體操做類型,由HTTP動詞表示 GET(SELECT):從服務器取出資源(一項或多項)。 POST(CREATE):在服務器新建一個資源。 PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。 PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。 DELETE(DELETE):從服務器刪除資源。 還有兩個不經常使用的HTTP動詞
    GET /zoos:列出全部動物園 POST /zoos:新建一個動物園 GET /zoos/ID:獲取某個指定動物園的信息 PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的所有信息) PATCH /zoos/ID:更新某個指定動物園的信息(提供該動物園的部分信息) DELETE /zoos/ID:刪除某個動物園 GET /zoos/ID/animals:列出某個指定動物園的全部動物 DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物

  6. 過濾信息(Filtering) 若是記錄數量不少,服務器不可能都將它們返回給用戶,API應該提供參數,過濾返回結果 ?limit=10:指定返回記錄的數量 ?offset=10:指定返回記錄的開始位置。 ?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。 ?sortby=name&order=asc:指定返回結果按照哪一個屬性排序,以及排序順序。 ?animal_type_id=1:指定篩選條件

  7. 狀態碼(Status Code)

200 OK - [GET]:服務器成功返回用戶請求的數據,該操做是冪等的(Idempotent)。
      201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。
      202 Accepted - [*]:表示一個請求已經進入後臺排隊(異步任務)
      204 NO CONTENT - [DELETE]:用戶刪除數據成功。
      400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操做,該操做是冪等的。
      401 Unauthorized - [*]:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。
      403 Forbidden - [*] 表示用戶獲得受權(與401錯誤相對),可是訪問是被禁止的。
      404 NOT FOUND - [*]:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操做,該操做是冪等的。
      406 Not Acceptable - [GET]:用戶請求的格式不可得(好比用戶請求JSON格式,可是隻有XML格式)。
      410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再獲得的。
      422 Unprocesable entity - [POST/PUT/PATCH] 當建立一個對象時,發生一個驗證錯誤。
      500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將沒法判斷髮出的請求是否成功。		
複製代碼
相關文章
相關標籤/搜索