web API接口、restful規範

[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/searchgithub

  • 請求方式: 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"
        }
    ]
}
相關文章
相關標籤/搜索