[TOC]html
drf(Django-restframework)框架安裝
- drf是Django的插件, 因此要提早安裝Django
- 安裝drf插件:
pip3 install djangorestframework
- 使用drf時, 要在django項目中的settings文件中註冊
Web API接口
什麼是接口
規定了提交參數的請求方式,訪問 其能夠獲取響應的反饋數據的url連接前端
包含了四部分: url連接 + 請求方式 + 請求參數 + 響應數據git
-
url: 長得像返回數據的url連接
https://api.map.baidu.com/place/v2/search
github -
請求方式: get post put patch deletedjango
-
請求參數: json或xml格式的key-value類型數據json
- ak: 124524542EJbhbuH899
- regin: 上海
- query: 大本營
- output: json
-
響應結果: json或xml格式的數據後端
-
上方請求參數的output參數值決定了響應數據的格式api
-
{ "status": 0, "message": "ok", "results": [ { "name": "大本營", "location": { "lat": 31.45346, "lng": 146.23423 }, "address": "本環路123號", "province": "上海市", } ...... ] }
-
接口文檔的編寫:YApi
YApi是去哪兒網前段計數中心的一個開源可視化 接口管理平臺.數組
詳情見官方文檔安全
接口測試工具: Postman
Postman是一款接口調試工具, 支持多操做系統平臺, 是測試接口的首選工具
能夠在官網下載使用
推薦Postman的開源代替品: Postwoman
restful接口規範
RESTful 是目前最流行的 API 設計規範,用於 Web 數據接口的設計。
url設計
一、保障數據安全
- 接口都是操做先後端數據的, 爲了保證數據的安全, 採用https協議
二、接口特徵表現
-
接口用來操做數據, 與網址有區別, 全部用特定的關鍵字表示接口
-
https://api.baidu.com https://www.baidu.com/api
-
三、多版本資源共存
-
若是一個資源存在多版本結果, 在url連接中要用特定符號來兼容多版本共存
https://api.baidu.com/v1/books/ https://api.baidu.com/v2/books/
四、數據就是資源
接口操做的數據稱之爲資源, 在url中體現 資源的名稱, 不能體現操做資源的動詞, 錯誤示範:https://api.baidu.com/get_books
-
常規資源接口
https://api.baidu.com/books/ https://api.baidu.com/books/(pk)/
-
很是規接口 和某資源不是特別密切或是不止一種資源
https://api.baidu.com/login/ https://api.baidu.com/place/search/
五、羣資源操做
通常還有額外的限制條件, 如排序、限制調試、分頁等
https://api.baidu.com/v1/books/?ordering=-price&limit=3 這讓人就知道 搜索價格最貴的前三本書
六、資源操做由請求方式決定
-
get 獲取單個或多個資源
https://api.baidu.com/books/ 羣查,返回多個結果對象 https://api.baidu.com/books/(pk)/ 單查,返回單個結果對象
-
post 新增單個或多個資源
https://api.baidu.com/books/ 單增 提交單個數據字典, 完成單增, 返回單個結果對象 羣增 提供多個數據字典的數組, 完成羣增, 返回多個結果對象
-
put 總體修改單個或多個資源
-
https://api.baidu.com/books/ 總體修改多個, 提供多個數據字典的數組(數據字典中包含主鍵), 完成總體多個修改,返回對個結果對象
-
https://api.baidu.com/books/(pk)/ 總體修改單個, 提供單個數據字典(主鍵在url中體現), 完成總體單個修改, 返回單個結果對象
-
-
patch 局部修改單個或多個資源
方式與put相同, 不一樣的是 操做的資源若是有5個key-value鍵值對, put請求提供的字典必須全包含, 可是patch提供的字典包含的鍵值對0-5個均可以 通常用patch
-
delete 刪除單個或多個資源
-
https://api.baidu.com/books/ 多刪, 提供多個資源主鍵數據, 完成羣刪, 不作任何資源的返回, 通常返回的結果就是: 成功或失敗
-
https://api.baidu.com/books/(pk)/ 單刪, 不須要提供額外數據, 完成單刪, 不作資源的返回
-
響應結果
一、響應對象中要包含網絡狀態碼(網絡狀態信息和網絡狀態碼捆綁出現, 不要額外設置)
- 1xx: 基本信息
- 2xx 成功
- 200 常規請求 成功
- 201 建立成功
- 3xx 重定向
- 4xx 客戶端 錯誤
- 400 錯誤請求
- 403 請求無權限
- 404 請求資源不存在
- 5xx 服務器錯誤 500
二、數據狀態碼 (通常是先後端約定規則)
如:
0: 成功 1: 失敗 1xx 具體失敗信息 要在接口文檔中明確寫出 2: 無數據 2xx 具體無數據信息
三、數據狀態信息
通常不單單是對數據狀態碼的解釋, 更多的是對結果的描述, 給前端開發者閱讀
{ "status": 0, "message": "ok", "results": [ { "name": "大本營", "location": { "lat": 31.45346, "lng": 146.23423 }, "address": "本環路123號", "province": "上海市", } ...... ] }
四、數據結果
通常是數組 \ 字典形式, 若是有子資源(圖片 視頻 音頻), 返回資源的url連接
{ "status": 0, "msg": "ok", "results": [ { "name": "小王子", "img": "https://api.baidu.com/media/books/1.jpg" } ] }