web API接口、restful規范


drf(Django-restframework)框架安裝

  • drf是Django的插件, 所以要提前安裝Django
  • 安裝drf插件: pip3 install djangorestframework
  • 使用drf時, 要在django項目中的settings文件中注冊

Web API接口

什么是接口

規定了提交參數的請求方式,訪問 其可以獲取響應的反饋數據的url鏈接

包含了四部分: url鏈接 + 請求方式 + 請求參數 + 響應數據

  • url: 長得像返回數據的url鏈接 https://api.map.baidu.com/place/v2/search

  • 請求方式: get post put patch delete

  • 請求參數: json或xml格式的key-value類型數據

    • ak: 124524542EJbhbuH899
    • regin: 上海
    • query: 大本營
    • output: json
  • 響應結果: json或xml格式的數據

    • 上方請求參數的output參數值決定了響應數據的格式

    • {
          "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設計

1、保障數據安全

  • 接口都是操作前后端數據的, 為了保證數據的安全, 采用https協議

2、接口特征表現

  • 接口用來操作數據, 與網址有區別, 所有用特定的關鍵字表示接口

    • https://api.baidu.com
      https://www.baidu.com/api
      

3、多版本資源共存

  • 如果一個資源存在多版本結果, 在url鏈接中要用特定符號來兼容多版本共存

    https://api.baidu.com/v1/books/
    https://api.baidu.com/v2/books/
    

4、數據就是資源

接口操作的數據稱之為資源, 在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/
    

5、群資源操作

一般還有額外的限制條件, 如排序、限制調試、分頁等

https://api.baidu.com/v1/books/?ordering=-price&limit=3

這讓人就知道  搜索價格最貴的前三本書

6、資源操作由請求方式決定

  • 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)/
      
      單刪, 不需要提供額外數據,  完成單刪,  不做資源的返回
      

響應結果

1、響應對象中要包含網絡狀態碼(網絡狀態信息和網絡狀態碼捆綁出現, 不要額外設置)

  • 1xx: 基本信息
  • 2xx 成功
    • 200 常規請求 成功
    • 201 創建成功
  • 3xx 重定向
  • 4xx 客戶端 錯誤
    • 400 錯誤請求
    • 403 請求無權限
    • 404 請求資源不存在
  • 5xx 服務器錯誤 500

2、數據狀態碼 (一般是前后端約定規則)

如:

0:  成功
1:  失敗    1xx 具體失敗信息 要在接口文檔中明確寫出
2:  無數據   2xx  具體無數據信息

3、數據狀態信息

一般不僅僅是對數據狀態碼的解釋, 更多的是對結果的描述, 給前端開發者閱讀

{
    "status": 0,
    "message": "ok",
    "results": [
        {
            "name": "大本營",
            "location": {
                "lat": 31.45346,
                "lng": 146.23423
            },
            "address": "本環路123號",
            "province": "上海市",
        }
        ......
    ]
}

4、數據結果

一般是數組 \ 字典形式, 如果有子資源(圖片 視頻 音頻), 返回資源的url鏈接

{
    "status": 0,
    "msg": "ok",
    "results": [
        {
            "name": "小王子",
            "img": "https://api.baidu.com/media/books/1.jpg"
        }
    ]
}


免責聲明!

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



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