1. 程式人生 > 其它 >drf API介面 restful規範

drf API介面 restful規範

內容概要

  • web應用模式
  • API介面
  • 介面測試工具postman
  • restful規範

內容詳細

web應用模式

        # 前後端混合開發
            -bbs專案,頁面渲染是在後臺完成--->render(request,'index.html')
          -後端人員---》寫前端css,js,html
        # 前後端分離開發---》主流---》前端發展出一些框架(vue,react)
            -js的dom操作---》html頁面--》通過js在頁面中插入內容
          -bom和dom
          -不用模板語法渲染頁面了----》在前端使用js渲染頁面
          -頁面渲染在前端完成
          -以後前端人員只負責寫前端
          -後端人員只負責寫後端
          -前端的展現形式---》不一定只是網頁,可能是app,小程式


API介面

        # api介面:前後端互動的媒介
        # 介面有的東西
            -url地址
          -請求方式:get ,post
          -請求引數:name='西遊記'
            get請求--->127.0.0.1/books?name='西遊記'
          -響應結果
            -http響應--》響應狀態碼--》響應頭---》響應體(json)

介面測試工具postman

        # 對介面進行測試---》在瀏覽器中只能傳送get請求,發不了post,delete..
        # 介面測試工具:mac,win,linux都可以
        # 使用最多的軟體:postman ---》後來慢慢收費了---》Postwoman

        # 下載地址:https://www.getpostman.com/downloads/
        # 雙擊就裝完了
        # 前後端互動的編碼格式有哪幾種?
          -urlencoded:正常的post請求提交資料:name=lqz&age=19
          -formdata:post請求上傳檔案:帶檔案二進位制形式
          -json:body體中的資料格式為:{"name":"lqz","age":19}--》用的多

restful規範

        # 前後端互動使用api介面---》符合某種規範---》restful規範---》寫前後端分離的標準
        # REST全稱是Representational State Transfer,中文意思是表述(編者注:通常譯為表徵性狀態轉移)。 它首次出現在2000年Roy Fielding的博士論文中。
        RESTful是一種定義Web API介面的設計風格,尤其適用於前後端分離的應用模式中


        # https://api.weibo.com/2/account/get_uid.json
        # 10條內容---》
            -1 資料的安全保障--》通常使用https協議
            -2 用api關鍵字標識介面---》在介面中帶api字眼--》讓別人一看就知道這是個api介面
            -https://api.baidu.com/books
                -https://127.0.0.1:8080/api/books

          -3 多版本共存--->在介面地址中帶版本號---》
                -都留---》儘快升級---》xx年我們就不支援xx以下版本了
                -有的人用了老版本app--》老介面v1
                -有的人用了新版本app--》新介面v2
                -https://api.baidu.com/v1/login
                -https://api.baidu.com/v2/login
            -4 資料即是資源,均使用名詞(可複數)--》請求地址中儘量不出現動詞
                -https://api.baidu.com/v1/users  # 獲取使用者,刪除使用者,新增使用者

          -5 資源操作由請求方式決定-->get,post,delete ,put,patch
            -get請求是獲取資料
            -post請求是新增資料
            -delete請求是刪除資料
            -put請求是修改資料
            -patch請求是區域性修改資料

          -6 請求地址中帶過濾條件
            -https://api.example.com/v1/zoos?limit=10  # 返回10條資料
            -https://api.example.com/v1/books?name=西遊記  # 查詢名字是西遊記的這本書

          -7 響應狀態碼(http的響應狀態碼,響應體的json資料中帶狀態碼)
            -http的響應狀態碼
              -1xx:請求正在處理
              -2xx:請求成功(200,201)  200和201有什麼區別?
              -3xx:重定向 (301和302有什麼區別)
              -4xx:客戶端錯誤(404:地址不存在,403:禁止了)
              -5xx:服務端錯誤 
            -響應體中返回json格式資料---》code,status--->也有狀態碼---》服務端自定義的
                -1001  :使用者名稱錯誤
                -1002   :沒有許可權。。

         -8 錯誤處理,應返回錯誤資訊
                -返回資料是json格式--》帶狀態碼---》錯誤資訊
              {
                error: "無許可權操作"
                }
        -9 返回資料格式符合如下規範(大部分公司不按這個)
            -多條資料返回列表
            GET /collection:返回資源物件的列表 [{name:lqz,age:19},{name:pyy,age:33}]
          -單條資料返回字典
          GET /collection/resource:返回單個資源物件 {name:lqz,age:19}
          -新增,返回新增的物件---》{name:lqz,age:19}
          POST /collection:返回新生成的資源物件
          -修改,返回修改後的物件--》{name:lqz,age:19}
          PUT /collection/resource:返回完整的資源物件
          -修改,返回修改後的物件--》{name:lqz,age:19}
          PATCH /collection/resource:返回完整的資源物件
          -刪除,返回空文件
          DELETE /collection/resource:返回一個空文件  -->{code:100,msg:刪除成功}


        -10 返回資源中連結地址
          {
              "id": 1404376560,
              "description": "人生五十年,乃如夢如幻;有生斯有死,壯士復何憾。",
              "url": "http://blog.sina.com.cn/zaku",
              "profile_image_url": "http://tp1.sinaimg.cn/1404376560/50/0/1",
              "domain": "zaku",
          }