DRF安裝與使用

阿麗米熱發表於2023-01-30

DRF安裝與使用

一、web應用模式(前後端不分離&前後端分離)

在開發web應用中,有兩種應用模式。前後端不分離,如BBS專案、前後端分離,後端人員只寫後端一點都不需要動前端程式碼、只負責寫介面

  • 前後端不分離:客戶端看到的內容和所有頁面效果都是服務端提供的
    image
    image

  • 前後端分離:前端只負責頁面(HTML、CSS、js)單獨分離到一個服務端,Python服務端只需要返回資料即可
    image
    image

二、API介面

1、API介面概念講解

API介面即應用程式程式設計介面(Applicant Programming Interface),應用程式對外提供了一個運算元據的入口,這個入口可以是函式或類方法也可以是一個URL地址或一個網址。當客戶端呼叫這個入口、應用程式則會執行相應的程式碼操作、給客戶端完成對應的功能。這樣可以減小前後端之間的合作成本,簡單的可以理解的話API介面就是前後端資訊互動的媒介

2.IPA介面測試工具postman

作為後端開發寫完的程式碼一定要自己測試一下,哪怕是動了一個逗號也要親自測試一下,但是問題又來了,在哪裡測試呢?哈哈這還不簡單!瀏覽器呀它是它是天然的測試工具,但是哥們兒!它功能不全只能測試get請求,其他的還是需要自己寫程式碼才能實現。所以我們就有了專門用來測試的工具postman,下載安裝也相當方便,官網下載直接雙擊安裝即可。
image
image
image

3.RESTful API規範

image

REST全稱為Representational State Transfer即表述性狀態轉移,RESTful是一種專門為web開發而定義API介面的設計風格、尤其是適用於前後端分離的應用模式中。這種風格的理念是後端開發的任務就是提供資料、對外提供的是資料資源的訪問介面、所以咋定義介面時客戶端訪問的URL路徑就表示這種要操作的資料資源。而對於資料資源分別使用post、get、delete、update等請求動作來表達對資料的增刪改查。RESTful規範是一種通用規範、不限制語言和開發框架的使用。因此、我們當然可以使用任何一門程式語言、任何框架都可以實現RESTful規範的API介面。

4.冪等性

介面實現過程中、會存在冪等性,所謂的冪等性透過客戶端發起多次同樣的請求時,是否對於服務端裡面的資源產生不同的結果來判斷的。如果多次請求結果一樣則是冪等性介面,反之非冪等性介面。

請求方式 是否冪等 是否安全
GET 冪等 安全
POST 不冪等 不安全
DELETE 冪等 不安全
PATCH 冪等 不安全

5.序列化

API介面開發最核心最常見的一個程式碼編寫過程就是序列化,所謂的序列化就是轉換資料格式,其有兩個階段,一是序列化:把後端的資料程式設計字串或者json資料提供給別人、二是反序列化:前端js提供的資料是json格式資料,對於Python而言json就是字串需要反序列化成字典、將字典轉換成模型物件,這樣才能把資料儲存到資料庫中
image

三、DRF框架

image

1.DRF定義

Django REST framework是一個在Django基礎上的web應用開發框架、可以快速開發REST API介面應用。在REST framework中,提供了序列化器Serialzier的定義,可以幫助我們簡化序列化與反序列化的過程,而且還封裝了豐富的類檢視、擴充套件類、檢視集來簡化檢視的編寫工作。REST framework還提供了認證、許可權、限流、過濾、分頁、介面文件等功能支援。REST framework也提供了一個API的web視覺化介面來方便檢視測試介面。

2.DRF的特點

  • 提供了定義序列化器Serializer的方法
  • 提供了豐富的類檢視、擴充套件類、簡化檢視編寫
  • 豐富的定製層級:函式檢視、類檢視、檢視集到自動生成API
  • 提供了認證、許可權、限流、過濾、分頁等功能
  • 內建了限流系統
  • 具有視覺化API web介面
  • 具有可擴充套件性、而且外掛豐富

3.安裝DRF前提

  1. Python直譯器版本要高於3.5以上
  2. Python直譯器要具備pymysql第三方模組
  3. Django框架版本要高於2.2以上

4.DRF的安裝

pip install djangorestframework -i https://pypi.douban.com/simple

5.DRF基本使用

該框架只能在Django框架的基礎上使用、所以需要先建立Django框架專案
# 在settings.py檔案中註冊

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'rest_framework',  # 在這裡新增即可
]
# 在urls.py檔案中開設路由

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.Index.as_view()),  # 開設的路由
]
# 在views.py檔案中寫簡單的檢視類 目的是驗證drf框架是否安裝成功

from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.response import Response

# Create your views here.


class Index(APIView):
    def get(self, request, *args, **kwargs):
        return Response({'name':'almira'})

如下圖就說明我們的drf安裝成功了!!!
image