Django Rest Framework(DRF)是構建強大且靈活的Web API的優秀工具。它基于Django,提供了一套用于構建Web API的組件和工具,簡化了API開發過程,同時保留了Django的優雅和強大。
一、Web應用模式
在開發Web應用時,通常有兩種開發模式。
1、前后端不分離
前端頁面看到的效果都是由后端控制,由后端渲染頁面或重定向,前端與后端的耦合度很高。
這種應用模式比較適合純網頁應用,但是當后端對接App時,App可能并不需要后端返回一個HTML網頁,而僅僅是數據本身,所以后端原本返回網頁的接口不再適用于前端App應用,為了對接App后端還需再開發一套接口。
2、前后端分離
后端僅返回前端所需的數據,不再渲染HTML頁面,不再控制前端的效果。
至于前端用戶看到什么效果,從后端請求的數據如何加載到前端中,都由前端自己決定,網頁有網頁的處理方式,App有App的處理方式,但無論哪種前端,所需的數據基本相同,后端僅需開發一套邏輯對外提供數據即可。
前后端分離模式優點:
-
? 提升開發效率
-
? 完美應對復雜多變的前端需求
-
? 增強代碼可維護性
二、什么是API 接口?
API(應用程序接口)
是一組定義了軟件組件如何互相交互的規范。
API 是一些功能、定義或者協議的集合,通過 API 接口實現計算機軟件之間的相互通信。對外封裝完善,調用時無需學習 API 內部源碼,依據 API 文檔功能說明書來使用即可。
API 同時也是一種中間件,為各種不同平臺提供數據共享。
API接口的數據格式有哪些?
目前 API 接口支持 XLSX、JSON、XML、CSV、RDF
等數據格式,其中 JSON 和 XML 是主流的數據格式,幾乎所有 API 接口都支持這兩種數據格式。
而 RESTful API
是一種基于REST架構風格設計的API。它使用統一的接口和狀態無關的通信方式來實現各種網絡應用。這種設計風格使得RESTful API具有簡單、靈活、可擴展和易于理解的特點,因此在Web開發中得到了廣泛的應用。
Django Rest Framework 正是基于Rest架構風格設計的一款 后端API 框架。
三、RESTful API
RESTful
是一種定義 Web API 接口的設計風格,尤其適用于前后端分離的應用模式中。
這種風格的理念認為后端開發任務就是提供數據的,對外提供的是數據資源的訪問接口,所以在定義接口時,客戶端訪問的URL路徑就表示這種要操作的數據資源。
事實上,我們可以使用任何一個框架都可以實現符合restful規范的API接口。
1、數據安全
RESTful API 鏈接一般都采用https協議進行傳輸,以提高數據交互過程中的安全性。
2、接口特征
通常用api關鍵字標識接口url。
https://api.github.io/
https://github.io/api
3、多數據版本共存
在url鏈接中標識數據版本。
https://api.github.io/v1
https://github.io/api/v2
注:url鏈接中的v1、v2就是不同數據版本的體現(一種數據資源有多版本情況下,也適用于新舊版本間)
4、數據即是資源,均使用名詞(可復數)
接口一般都是完成前后臺數據的交互,交互的數據我們稱之為資源。
https://api.github.io/v1/users
注:一般提倡用資源的復數形式,在url鏈接中千萬不要出現操作資源的動詞
錯誤示范:
https://api.github.io/v1/delete-user
特殊的接口可以出現動詞,因為這些接口一般沒有一個明確的資源,或是動詞就是接口的核心含義
https://api.github.io/login
5、資源操作由請求方式決定
操作資源一般都會涉及到增刪改查,我們提供請求方式來標識增刪改查動作。
https://api.github.io/users - get請求:獲取所有用戶
https://api.github.io/users/1 - get請求:獲取ID為1的用戶
https://api.github.io/users - post請求:新增一個用戶
https://api.github.io/users/1 - put請求:整體修改ID為1的用戶
https://api.github.io/users/1 - patch請求:局部修改ID為1的用戶
https://api.github.io/users/1 - delete請求:刪除ID為1的用戶
6、通過在url上傳參的形式傳遞搜索條件
https://api.github.io/v1/projects?page=5&per_page=10 指定第幾頁,以及每頁的記錄數
7、錯誤處理,應返回錯誤信息
{ error: "服務器發生錯誤" }
四、Django Rest Framework
1、DRF 簡介
Django REST framework
是一個建立在Django基礎之上的Web 應用開發框架,可以快速的開發REST API接口應用。
DRF優點:
-
提供了定義序列化器Serializer的方法,可以快速根據 Django ORM 或者其它庫自動序列化/反序列化;
-
提供了豐富的類視圖、Mixin擴展類,簡化視圖的編寫;
-
豐富的定制層級:函數視圖、類視圖、視圖集合到自動生成 API,滿足各種需要;
-
多種身份認證和權限認證方式的支持 JWT;
-
內置了限流系統;
-
直觀的 API web 界面;
-
可擴展性,插件豐富
2、安裝和設置
首先,確保你的項目已經安裝了Django。然后,使用以下命令安裝DRF:
pip install djangorestframework
接下來,在你的Django項目的settings.py
中添加以下行:
INSTALLED_APPS = [ # ... 'rest_framework', ]
然后,配置你的URL以包含DRF的路由:
from django.urls import path, include
urlpatterns = [
# ...
path('api/', include('rest_framework.urls')),
]
3、創建一個簡單的API視圖
現在,我們來創建一個簡單的API視圖。首先,定義一個序列化器:
from rest_framework import serializers
class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = 'all'
然后,創建一個基于類的視圖:
from rest_framework import generics
from .models import MyModel
from .serializers import MyModelSerializer
class MyModelListView(generics.ListCreateAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer
最后,在你的urls.py
中添加這個視圖:
from django.urls import path
from .views import MyModelListView
urlpatterns = [
# ...
path('mymodel/', MyModelListView.as_view(), name='mymodel-list'),
]
現在,你已經創建了一個簡單的API視圖,可以通過/api/mymodel/
訪問。
五、結語
本篇文章小圈只是做了一個簡單的引入以及介紹,DRF有很多其他功能和選項,可以滿足更復雜的API需求。比如:更豐富的類視圖、身份認證與權限管理等,后續小圈會抽空根據案例為大家帶來更精細化的DRF學習教程。現在我們可以通過深入研究DRF文檔和示例,更好地利用這個強大的工具。
希望這篇博文能夠幫助你開始使用Django Rest Framework,構建出強大且高效的Web API。祝大家編碼愉快!