一、web應用模式(前後端不分離&前後端分離)
在開發web應用中,有兩種應用模式。前後端不分離,如BBS專案、前後端分離,後端人員只寫後端一點都不需要動前端程式碼、只負責寫介面
前後端不分離:使用者端看到的內容和所有頁面效果都是伺服器端提供的
前後端分離:前端只負責頁面(HTML、CSS、js)單獨分離到一個伺服器端,Python伺服器端只需要返回資料即可
二、API介面
API介面即應用程式程式設計介面(Applicant Programming Interface),應用程式對外提供了一個運算元據的入口,這個入口可以是函數或類方法也可以是一個URL地址或一個網址。當用戶端呼叫這個入口、應用程式則會執行相應的程式碼操作、給使用者端完成對應的功能。這樣可以減小前後端之間的合作成本,簡單的可以理解的話API介面就是前後端資訊互動的媒介
作為後端開發寫完的程式碼一定要自己測試一下,哪怕是動了一個逗號也要親自測試一下,但是問題又來了,在哪裡測試呢?哈哈這還不簡單!瀏覽器呀它是它是天然的測試工具,但是哥們兒!它功能不全只能測試get請求,其他的還是需要自己寫程式碼才能實現。所以咱就有了專門用來測試的工具postman,下載安裝也相當方便,官網下載直接雙擊安裝即可。
REST全稱為Representational State Transfer即表述性狀態轉移,RESTful是一種專門為web開發而定義API介面的設計風格、尤其是適用於前後端分離的應用模式中。這種風格的理念是後端開發的任務就是提供資料、對外提供的是資料資源的存取介面、所以咋定義介面時使用者端存取的URL路徑就表示這種要操作的資料資源。而對於資料資源分別使用post、get、delete、update等請求動作來表達對資料的增刪改查。RESTful規範是一種通用規範、不限制語言和開發框架的使用。因此、我們當然可以使用任何一門程式語言、任何框架都可以實現RESTful規範的API介面。
介面實現過程中、會存在冪等性,所謂的冪等性通過使用者端發起多次同樣的請求時,是否對於伺服器端裡面的資源產生不同的結果來判斷的。如果多次請求結果一樣則是冪等性介面,反之非冪等性介面。
請求方式 | 是否冪等 | 是否安全 |
---|---|---|
GET | 冪等 | 安全 |
POST | 不冪等 | 不安全 |
DELETE | 冪等 | 不安全 |
PATCH | 冪等 | 不安全 |
API介面開發最核心最常見的一個程式碼編寫過程就是序列化,所謂的序列化就是轉換資料格式,其有兩個階段,一是序列化:把後端的資料程式設計字串或者json資料提供給別人、二是反序列化:前端js提供的資料是json格式資料,對於Python而言json就是字串需要反序列化成字典、將字典轉換成模型物件,這樣才能把資料儲存到資料庫中
三、DRF框架
Django REST framework是一個在Django基礎上的web應用開發框架、可以快速開發REST API介面應用。在REST framework中,提供了序列化器Serialzier的定義,可以幫助我們簡化序列化與反序列化的過程,而且還封裝了豐富的類檢視、擴充套件類、檢視集來簡化檢視的編寫工作。REST framework還提供了認證、許可權、限流、過濾、分頁、介面檔案等功能支援。REST framework也提供了一個API的web視覺化介面來方便檢視測試介面。
- 提供了定義序列化器Serializer的方法
- 提供了豐富的類檢視、擴充套件類、簡化檢視編寫
- 豐富的客製化層級:函數檢視、類檢視、檢視集到自動生成API
- 提供了認證、許可權、限流、過濾、分頁等功能
- 內建了限流系統
- 具有視覺化API web介面
- 具有可延伸性、而且外掛豐富
- Python直譯器版本要高於3.5以上
- Python直譯器要具備pymysql第三方模組
- Django框架版本要高於2.2以上
pip install djangorestframework -i https://pypi.douban.com/simple
該框架只能在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安裝成功了!!!