Python Restful API 框架 Django VS Flask

Python是最受好評(píng)的編程語言之一。 它因?yàn)楹?jiǎn)潔的語法,高效的編程速度,成為了大眾的青睞。 對(duì)于任何初學(xué)者來說,python永遠(yuǎn)都是他們的首選。 自1991年發(fā)布以來,Python已經(jīng)開發(fā)了許多框架和類庫,這些框架和類庫不僅加速了應(yīng)用程序的開發(fā),而且還提高了科學(xué)計(jì)算的研發(fā),并且同時(shí)增添了許多圖形用戶界面。
現(xiàn)在主流的框架有下面幾個(gè):
*Django,流行但是笨重,還麻煩,人生苦短,肯定不選
*web.py,輕量,但據(jù)說作者仙逝無人維護(hù),好吧,先pass
*tornado,據(jù)說倡導(dǎo)自己造輪子,雖然是facebook開源的吧,但聽到這個(gè),就算了吧
*Flask 很輕,花很少的成本就能夠開發(fā)一個(gè)簡(jiǎn)單的網(wǎng)站。非常適合初學(xué)者學(xué)習(xí)。Flask 框架學(xué)會(huì)以后,可以考慮學(xué)習(xí)插件的使用。例如使用 WTForm + Flask-WTForm 來驗(yàn)證表單數(shù)據(jù),用 SQLAlchemy + Flask-SQLAlchemy 來對(duì)你的數(shù)據(jù)庫進(jìn)行控制。

那么在眾多python web開發(fā)框架中,django和flask絕對(duì)是金字塔尖上的兩顆明珠。對(duì)于Restful api的設(shè)計(jì)和開發(fā),這兩個(gè)誰更適合一些呢?

Django

Django是一個(gè)全能的Web框架,具有BSD許可證,可以作為開放源代碼使用,使用它開發(fā)人員可以快速開發(fā)出一個(gè)Web應(yīng)用程序。 它包括多個(gè)軟件包,用于處理典型通用的Web開發(fā)任務(wù),例如身份驗(yàn)證,內(nèi)容管理,支架,模板,緩存等。django還提供了專門用于開發(fā) REST的框架(DRF),它對(duì)于REST API開發(fā)和部署非常友好。

Django Rest框架

DRF是一個(gè)開源,成熟的Python和Django庫,旨在幫助APP開發(fā)人員構(gòu)建復(fù)雜的Web API。 DRF的模塊化,靈活和可自定義的體系結(jié)構(gòu)使開發(fā)REST API變得異常容易。 DRF是一個(gè)使用描述視圖和API接口之間映射關(guān)系的序列化程序。通過劃分模型,概括線路等表示形式(例如JSON或XML)來滿足特定的API接口。

Django的優(yōu)點(diǎn):

開源框架,有豐富的文檔支持
功能非常強(qiáng)大,提供各個(gè)模塊解決常用問題
強(qiáng)大的路由系統(tǒng),可以定制優(yōu)雅的URL
提供集成好的簡(jiǎn)易后臺(tái)管理

Django的缺點(diǎn):

系統(tǒng)緊耦合,想用喜歡的第三方庫來代替是比較困難的,使用補(bǔ)丁也不順暢
自帶的ORM不如SQLAlchemy強(qiáng)大。
模板功能比較弱,不能插入Python代碼,要寫復(fù)雜一點(diǎn)的邏輯需要另外用Python實(shí)現(xiàn) Tag或Filter。

Flask

Flask是基于Werkzeug(WSGI工具包)和Jinja 2(模板引擎)的Python開發(fā)人員的微框架。 Flask易于設(shè)置且易于使用。與其他框架一樣,它具有多種現(xiàn)成的功能,例如內(nèi)置的開發(fā)服務(wù)器,調(diào)試器,單元測(cè)試支持,模板,安全cookie和RESTful請(qǐng)求分派。Flask RestfulFlask-RESTful是Flask的擴(kuò)展,為構(gòu)建REST API提供了額外的支持。Flask-Restful是與現(xiàn)有ORM庫一起使用的輕量級(jí)框架。 Flask-RESTful推薦通過最少的配置達(dá)到最快的部署。Flask-RESTful具有足智多謀的路由系統(tǒng),有了它,你可以做任何自定義跳轉(zhuǎn)。Flask-RESTful提供了基于Flask可插拔的視圖資源??刹灏我晥D提供了一種訪問HTTP方法的簡(jiǎn)單方法。 RESTful請(qǐng)求解析器旨在提供對(duì)(flask.request)請(qǐng)求對(duì)象中包含的任何變量的統(tǒng)一而直接的訪問。在大多數(shù)情況下,應(yīng)用程序開發(fā)人員更喜歡控制渲染響應(yīng)數(shù)據(jù),并且Flask-RESTful提供了一種機(jī)制,您可以在其中使用ORM模型甚至自定義類作為渲染對(duì)象。關(guān)于此框架的另一個(gè)有趣的事實(shí)是,應(yīng)用程序開發(fā)人員無需擔(dān)心會(huì)暴露任何內(nèi)部數(shù)據(jù)結(jié)構(gòu),因?yàn)樗捎靡环N格式并過濾響應(yīng)對(duì)象。因此,當(dāng)我們查看代碼時(shí),很明顯哪些數(shù)據(jù)將用于渲染以及如何格式化它們。

Flask框架的的優(yōu)點(diǎn)

非常靈活,代碼簡(jiǎn)潔,核心代碼只依賴Werkzeug WSGI工具箱和Jinja2模板引擎
擴(kuò)展時(shí)開發(fā),可以非常方便和第三方庫進(jìn)行集成

Flask框架的缺點(diǎn)

對(duì)于新手的學(xué)習(xí)曲線較高
可選擇的第三方庫優(yōu)劣不一,導(dǎo)致項(xiàng)目質(zhì)量不穩(wěn)定
需要開發(fā)人員有大量的經(jīng)驗(yàn)才能開發(fā)出有質(zhì)量保證的程序

總結(jié)

可以說python的開發(fā)者是非常幸福的,因?yàn)樗鼈冇袃蓚€(gè)非常好用的框架來進(jìn)行web開發(fā),然而如何選擇卻是一個(gè)難題,可能這就是幸福的煩惱吧。對(duì)于新手來說,推薦使用django來進(jìn)行開發(fā),因?yàn)槟銜?huì)有更豐富的文檔幫助,你會(huì)輕松實(shí)現(xiàn)你想要的功能。對(duì)于性能要求較高的web,推薦使用flask,因?yàn)樗`活的配置和友好的擴(kuò)展接口可以讓你編寫出更高效地程序。當(dāng)然,仁者見仁智者見智,兩者沒有孰強(qiáng)孰弱,都是非常棒的框架,如果你有時(shí)間的話,兩者都可以學(xué)習(xí)一下,也許你會(huì)從此愛上這兩個(gè)框架。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容