Restful規範

1,REST風格css

  • 資源 網頁中能看到的都是資源
  • uri 統一資源標識符
  • url 統一資源定位符
  • 統一資源接口  
    •   對資源的操做根據HTTP請求方式的不一樣進行不一樣的操做
    •         遵循HTTP請求方式的語義
  • 先後端傳輸的是資源的表述(先後端傳輸的是字符串的形式,每次傳輸時,都須要數據格式的轉化)
  • 展示的是資源的狀態

2,凡是遵循REST風格實現的先後端交互都叫RESTful架構python

  • 核心思想:
    •   面向資源去編程,url中儘可能用名詞,不要用動詞
    •         根據HTTP請求方式方式的不一樣對資源進行不一樣的操做(增刪改查)
  • 在url中的體現:
    •   體現版本
      •   http://v2bootcss.com/
      •        http://bootcss.com/v2
    •        體現是不是API
      •   https://v2.bootcss.com/api
    •   有過濾條件
      •   https://v2.bootcss.com/course?page=1
  • 在返回值中
    •   攜帶狀態碼
    •        返回值  
      •   get返回值查看的全部或者單條數據
      •        post 返回新增的這條數據
      •        put/patch 返回的是更新的這條數據
      •        delete 返回值空
    •   攜帶錯誤信息
    •        攜帶超連接 

3,FBV和CBV的區別django

  • 3.1,FBV是一條路由對應一個視圖函數
  • 3.2,CBV是多條路由或一個路由對應一個業務處理的主要是在類中繼承了View,會根據不一樣的請求方式,會執行相應的方法,具體代碼以下:
 # 先處理請求的方式,將大寫轉換成小寫,而後判斷是否存在於請求的方式中
        # http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
        if request.method.lower() in self.http_method_names:
            # 若是存在相應的方法就經過反射執行相應的方法,反射的時候給一個默認值,當不存在相應的方法時就
            # 就拋一個這樣的錯誤:'Method Not Allowed (%s): %s', request.method, request.path,
            #             extra={'status_code': 405, 'request': request}
            #         )
            handler = getattr(self, request.method.lower(), self.http_method_not_allowed) else: # 不然也拋一個這樣,此方法不被容許的錯誤:'Method Not Allowed (%s): %s', request.method, request.path, # extra={'status_code': 405, 'request': request} # ) handler = self.http_method_not_allowed return handler(request, *args, **kwargs)

4,在rest_framework中通常都用APIviw,(其實APIView是繼承View的)編程

 

  • 4.1,APIView繼承了View
  • 4.2,APIView重寫了as_view以及dispatch方法
  • 4.3,在dispatch裏從新封裝了request
    • 4.3.1,request = Request()
    • 舊的request變成了_request
  • 4.4,get請求數據(此時的get是查看的意思)
    • request.query_params
  • 4.5,post請求的數據(此時的post是增長)
    • request.data

具體代碼以下:json

APIView和View的區別代碼

5,rest_framework的安裝(這是一個框架)後端

  1. 在cmd或者python的命令終端輸入下載的命令:pip install djangorestframework
  2. 在setting的app中註冊rest_framework

6,在python中的序列化的方法api

View Code

總結:Python的數據類型轉化成json格式的數據類型架構

  1. 初版用values以及JsonResponse實現序列化
  2. 第二版用django的serialize實現序列化
    • 缺點:不能很好的處理外鍵關係
  1. 第三版用DRF實現序列化
    1. 第一步聲明序列化器
    2. 第二步使用咱們的序列化器序列化queryset
      1. 把模型對象放入序列化器進行字段匹配
      2. 匹配上的字段進行序列化,匹配不上的丟棄
    3. 序列化好的數據存在於ser_obj.data中
  2. 外鍵關係的序列化是嵌套的序列化器對象,注意當時queryset時,要用many=True把一個個獲得的對象傳進去
相關文章
相關標籤/搜索