1. 程式人生 > >複習第一天

複習第一天

1. 你理解的Http協議?
        - 建立在tcp之上
        - 一次請求一次響應然後斷開連線(無狀態、短連線)
        - 請求和響應
            傳送:請求頭\r\n\r\n請求體
                  host:www.luffy.com\r\ncontent-type:application/json\r\n\r\n請求體
            響應:響應頭\r\n\r\n響應體

2. django請求生命週期

  -瀏覽器傳送請求到後端---->後端{wsgi---->中介軟體---->路由---->檢視---->(模型,資料庫)---->將資料經過中介軟體返回wsgi}---->經過封裝返回給瀏覽器       
3. wsgi

  -web服務閘道器介面,是一套協議,而實現協議的模組是wsgiref--->接收請求封裝成物件交給web服務框架       
4. django中介軟體是什麼?
  -在檢視函式執行前頂自己一些操作,

5. 使用中介軟體做過什麼?
        - 內建
            - csrf
            - session
        - 自定義
            - 登入認證
            - 許可權
            - cors
6. 中介軟體中有多少個方法?


        5個
7. FBV和CBV是什麼?以及優缺點。

  -FBV:在視圖裡通過函式處理請求;優點:靈活

  -CBV:在視圖裡通過類處理請求;優點:簡潔,通過反射的方法根據method不同做不同的操作,提高了程式碼的複用性.
8. rest api
  - 1.建議使用HTTPS,2.標識版本,3.標識是api,4.面向資源程式設計,5.條件,6.根據method不同進行不同操作,7.返回值,8.返回錯誤資訊,9.返回url,10.響應式返回狀態碼
9. django rest framework框架

  -1.路由,2.檢視,3.版本,4.許可權,5.認證,6.頻率控制,7.解析器,8.序列化,9.分頁,10.渲染器  

10. 檢視常見的繼承
        from rest_framework.views import APIView # *
        from rest_framework.generics import GenericAPIView
        from rest_framework.viewsets import GenericViewSet # as_view
        from rest_framework.viewsets import ModelViewSet # *
11. 如何實現的訪問頻率控制?
        匿名使用者:無法控制,因為使用者可以換代理IP
            {
                192.168.1.1:[1521223123.232, 1521223122.232, 1521223121.232],
                192.168.1.2:[1521223123.232, 1521223122.232, 1521223121.232],
                192.168.1.3:[1521223123.232, 1521223122.232, 1521223121.232],
                192.168.1.4:[1521223123.232, 1521223122.232, 1521223121.232],
                192.168.1.5:[1521223123.232, 1521223122.232, 1521223121.232],
                192.168.1.6:[1521223123.232, 1521223122.232, 1521223121.232],
            }
 
        登入使用者:如果有很多賬號,也無法限制
            {
                alex:[1521223123.232, 1521223122.232, 1521223121.232],
                eric:[1521223123.232, 1521223122.232, 1521223121.232],
            }
        
        參考原始碼:from rest_framework.throttling import SimpleRateThrottle
        
12. 序列化
        自定義欄位:- source   - method