一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

 禁忌石 2023-12-08 發(fā)布于江蘇

Django Rest Framework(DRF)是構(gòu)建強大且靈活的Web API的優(yōu)秀工具。它基于Django,提供了一套用于構(gòu)建Web API的組件和工具,簡化了API開發(fā)過程,同時保留了Django的優(yōu)雅和強大。

一、Web應(yīng)用模式

在開發(fā)Web應(yīng)用時,通常有兩種開發(fā)模式。

1、前后端不分離

前端頁面看到的效果都是由后端控制,由后端渲染頁面或重定向,前端與后端的耦合度很高。

這種應(yīng)用模式比較適合純網(wǎng)頁應(yīng)用,但是當(dāng)后端對接App時,App可能并不需要后端返回一個HTML網(wǎng)頁,而僅僅是數(shù)據(jù)本身,所以后端原本返回網(wǎng)頁的接口不再適用于前端App應(yīng)用,為了對接App后端還需再開發(fā)一套接口。

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

2、前后端分離

后端僅返回前端所需的數(shù)據(jù),不再渲染HTML頁面,不再控制前端的效果。

至于前端用戶看到什么效果,從后端請求的數(shù)據(jù)如何加載到前端中,都由前端自己決定,網(wǎng)頁有網(wǎng)頁的處理方式,App有App的處理方式,但無論哪種前端,所需的數(shù)據(jù)基本相同,后端僅需開發(fā)一套邏輯對外提供數(shù)據(jù)即可。

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

前后端分離模式優(yōu)點:

  • 提升開發(fā)效率
  • 完美應(yīng)對復(fù)雜多變的前端需求
  • 增強代碼可維護性

二、什么是API 接口?

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

API(應(yīng)用程序接口)是一組定義了軟件組件如何互相交互的規(guī)范。

API 是一些功能、定義或者協(xié)議的集合,通過 API 接口實現(xiàn)計算機軟件之間的相互通信。對外封裝完善,調(diào)用時無需學(xué)習(xí) API 內(nèi)部源碼,依據(jù) API 文檔功能說明書來使用即可。

API 同時也是一種中間件,為各種不同平臺提供數(shù)據(jù)共享。

API接口的數(shù)據(jù)格式有哪些?

目前 API 接口支持 XLSX、JSON、XML、CSV、RDF 等數(shù)據(jù)格式,其中 JSON 和 XML 是主流的數(shù)據(jù)格式,幾乎所有 API 接口都支持這兩種數(shù)據(jù)格式。

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

而 RESTful API 是一種基于REST架構(gòu)風(fēng)格設(shè)計的API。它使用統(tǒng)一的接口和狀態(tài)無關(guān)的通信方式來實現(xiàn)各種網(wǎng)絡(luò)應(yīng)用。這種設(shè)計風(fēng)格使得RESTful API具有簡單、靈活、可擴展和易于理解的特點,因此在Web開發(fā)中得到了廣泛的應(yīng)用。

Django Rest Framework 正是基于Rest架構(gòu)風(fēng)格設(shè)計的一款 后端API 框架。

三、RESTful API

RESTful 是一種定義 Web API 接口的設(shè)計風(fēng)格,尤其適用于前后端分離的應(yīng)用模式中。

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

這種風(fēng)格的理念認為后端開發(fā)任務(wù)就是提供數(shù)據(jù)的,對外提供的是數(shù)據(jù)資源的訪問接口,所以在定義接口時,客戶端訪問的URL路徑就表示這種要操作的數(shù)據(jù)資源。

事實上,我們可以使用任何一個框架都可以實現(xiàn)符合restful規(guī)范的API接口。

1、數(shù)據(jù)安全

RESTful API 鏈接一般都采用https協(xié)議進行傳輸,以提高數(shù)據(jù)交互過程中的安全性。

2、接口特征

通常用api關(guān)鍵字標(biāo)識接口url。

https://api./https://github.io/api

3、多數(shù)據(jù)版本共存

在url鏈接中標(biāo)識數(shù)據(jù)版本。

https://api./v1https:///api/v2

注:url鏈接中的v1、v2就是不同數(shù)據(jù)版本的體現(xiàn)(一種數(shù)據(jù)資源有多版本情況下,也適用于新舊版本間)

4、數(shù)據(jù)即是資源,均使用名詞(可復(fù)數(shù))

接口一般都是完成前后臺數(shù)據(jù)的交互,交互的數(shù)據(jù)我們稱之為資源。

https://api./v1/users

注:一般提倡用資源的復(fù)數(shù)形式,在url鏈接中千萬不要出現(xiàn)操作資源的動詞
錯誤示范:
https://api./v1/delete-user

特殊的接口可以出現(xiàn)動詞,因為這些接口一般沒有一個明確的資源,或是動詞就是接口的核心含義

https://api./login

5、資源操作由請求方式?jīng)Q定

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

操作資源一般都會涉及到增刪改查,我們提供請求方式來標(biāo)識增刪改查動作。

https://api./users - get請求:獲取所有用戶https://api./users/1 - get請求:獲取ID為1的用戶https://api./users - post請求:新增一個用戶https://api./users/1 - put請求:整體修改ID為1的用戶https://api./users/1 - patch請求:局部修改ID為1的用戶https://api./users/1 - delete請求:刪除ID為1的用戶

6、通過在url上傳參的形式傳遞搜索條件

https://api./v1/projects?page=5&per_page=10  指定第幾頁,以及每頁的記錄數(shù)

7、錯誤處理,應(yīng)返回錯誤信息

{ error: '服務(wù)器發(fā)生錯誤'}

四、Django Rest Framework

1、DRF 簡介

Django REST framework 是一個建立在Django基礎(chǔ)之上的Web 應(yīng)用開發(fā)框架,可以快速的開發(fā)REST API接口應(yīng)用。

Python 如何開發(fā)出RESTful Web接口,DRF框架助力靈活實現(xiàn)!

DRF優(yōu)點:

  • 提供了定義序列化器Serializer的方法,可以快速根據(jù) Django ORM 或者其它庫自動序列化/反序列化;
  • 提供了豐富的類視圖、Mixin擴展類,簡化視圖的編寫;
  • 豐富的定制層級:函數(shù)視圖、類視圖、視圖集合到自動生成 API,滿足各種需要;
  • 多種身份認證和權(quán)限認證方式的支持 JWT;
  • 內(nèi)置了限流系統(tǒng);
  • 直觀的 API web 界面;
  • 可擴展性,插件豐富

2、安裝和設(shè)置

首先,確保你的項目已經(jīng)安裝了Django。然后,使用以下命令安裝DRF:

pip install djangorestframework

接下來,在你的Django項目的settings.py中添加以下行:

INSTALLED_APPS = [ # ... 'rest_framework',]

然后,配置你的URL以包含DRF的路由:

from django.urls import path, includeurlpatterns = [    # ...    path('api/', include('rest_framework.urls')),]

3、創(chuàng)建一個簡單的API視圖

現(xiàn)在,我們來創(chuàng)建一個簡單的API視圖。首先,定義一個序列化器:

from rest_framework import serializersclass MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = 'all'

然后,創(chuàng)建一個基于類的視圖:

from rest_framework import genericsfrom .models import MyModelfrom .serializers import MyModelSerializerclass MyModelListView(generics.ListCreateAPIView):    queryset = MyModel.objects.all()    serializer_class = MyModelSerializer

最后,在你的urls.py中添加這個視圖:

from django.urls import pathfrom .views import MyModelListViewurlpatterns = [ # ... path('mymodel/', MyModelListView.as_view(), name='mymodel-list'),]

現(xiàn)在,你已經(jīng)創(chuàng)建了一個簡單的API視圖,可以通過/api/mymodel/訪問。

五、結(jié)語

本篇文章小圈只是做了一個簡單的引入以及介紹,DRF有很多其他功能和選項,可以滿足更復(fù)雜的API需求。比如:更豐富的類視圖、身份認證與權(quán)限管理等,后續(xù)小圈會抽空根據(jù)案例為大家?guī)砀毣腄RF學(xué)習(xí)教程?,F(xiàn)在我們可以通過深入研究DRF文檔和示例,更好地利用這個強大的工具。

希望這篇博文能夠幫助你開始使用Django Rest Framework,構(gòu)建出強大且高效的Web API。祝大家編碼愉快!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    久久精品国产亚洲av久按摩| 久久精品免费视看国产成人 | 中文字幕日韩欧美理伦片| 97人妻精品免费一区二区| 日韩精品视频一二三区| 欧美人妻盗摄日韩偷拍| 国产一区二区三区不卡| 欧美人与动牲交a精品| 国产成人精品国内自产拍| 激情五月天深爱丁香婷婷| 久久少妇诱惑免费视频| 高清免费在线不卡视频| 亚洲av首页免费在线观看| 亚洲国产av在线观看一区 | 91人妻人澡人人爽人人精品 | 国产精品十八禁亚洲黄污免费观看 | 亚洲欧美日韩国产自拍| 国产欧美日产中文一区| 亚洲av又爽又色又色| 国产精品国三级国产专不卡| 亚洲婷婷开心色四房播播| 日韩特级黄片免费在线观看 | 大香蕉久久精品一区二区字幕| 国产福利一区二区三区四区| 黄色美女日本的美女日人| 国产欧美一区二区久久| 国产日产欧美精品视频| 国产三级黄片在线免费看| 亚洲欧美黑人一区二区| 又大又长又粗又黄国产| 国产国产精品精品在线| 亚洲成人黄色一级大片| 国产乱淫av一区二区三区| 亚洲综合色婷婷七月丁香| 91日韩在线视频观看| 欧美日韩成人在线一区| 久久精品久久精品中文字幕| 亚洲精品一区二区三区免| 欧美激情视频一区二区三区| 91免费一区二区三区| 亚洲天堂久久精品成人|