RESTful風格API接口及狀態碼


1.1 什么是RESTful

  • REST與技術無關,代表的是一種軟件架構風格(REST是Representational State Transfer的簡稱,中文翻譯為“表征狀態轉移”)
  • REST從資源的角度類審視整個網絡,它將分布在網絡中某個節點的資源通過URL進行標識
  • 所有的數據,不過是通過網絡獲取的還是操作(增刪改查)的數據,都是資源,將一切數據視為資源是REST區別與其他架構風格的最本質屬性
  • 對於REST這種面向資源的架構風格,有人提出一種全新的結構理念,即:面向資源架構(ROA: Resource Oriented Architecture)

1.web開發本質

  • 對數據庫中的表進行增刪改查操作
  • Restful風格就是把所有數據都當做資源,對表的操作就是對資源操作
  • 在url同通過 資源名稱來指定資源
  • 通過 get/post/put/delete/patch 對資源的操作

2.RESTful API設計規范

  • 1.API與用戶的通信協議,總是使用HTTPs協議。
  • 2.域名
# 1)子域名方式 
      https://api.example.com       #盡量將API部署在專用域名(會存在跨 域問題)
      https://www.example.com 
# 2)url方式 
      https://example.org https://example.org/api/         # API很簡單
  • 3.版本
URL 如:https://api.example.com/v1/ 
請求頭跨域時,引發發送多次請求
  • 4.面向資源編程 : 路徑,視網絡上任何東西都是資源,均使用名詞表示(可復數)
https://api.example.com/v1/zoos 
https://api.example.com/v1/animals 
https://api.example.com/v1/employees
  • 5.method
GET(查詢數據) # 從服務器取出資源(一項或多項) 
POST(創建數據) # 在服務器新建一個資源 
PUT(修改數據) # 在服務器更新資源(客戶端提供改變后的完整資源) 
PATCH(修改屬性) # 在服務器更新資源(客戶端提供改變的屬性) 
DELETE(刪除數據) # 從服務器刪除資源
  • 6.過濾,分頁,排序 :通過在url上傳參的形式傳遞搜索條件
https://api.example.com/v1/zoos?limit=10:指定返回記錄的數量 
https://api.example.com/v1/zoos?offset=10:指定返回記錄的開始位置 
https://api.example.com/v1/zoos?page=2&per_page=100:指定第幾頁,以及每頁的記錄數 
https://api.example.com/v1/zoos?sortby=name&order=asc:指定返回結果按照哪個屬性排序, 以及排序順序
https://api.example.com/v1/zoos?animal_type_id=1:指定篩選條件
  • '狀態碼'
'''1. 2XX請求成功''' 
# 200 請求成功,一般用於GET與POST請求 
# 201 Created - [POST/PUT/PATCH]:用戶新建或修改數據成功。 
# 202 Accepted - [*]:表示一個請求已經進入后台排隊(異步任務) 
# 204 NO CONTENT - [DELETE]:用戶刪除數據成功。 

'''2. 3XX重定向''' # 
301 NO CONTENT - 永久重定向 
# 302 NO CONTENT - 臨時重定向 

'''3. 4XX客戶端錯誤''' 
# 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] 當創建一個對象時,發生一個驗證錯誤。 

'''4. 5XX服務端錯誤''' 
# 500 INTERNAL SERVER ERROR - [*]:服務器內部錯誤,無法完成請求 
# 501 Not Implemented 服務器不支持請求的功能,無法完成請求 

更多狀態碼參考:https://www.runoob.com/http/http-status-codes.html


免責聲明!

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



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