Flask是一個基于Werkzeug的WSGI工具包和Jinja2的模板引擎的Python微框架。Flask由Armin Ronacher于2010年創建,自首次亮相以來已更新了27次。它仍然是迄今為止增長最快的Python框架之一。用戶可以加入社區郵件列表,收聽Flask的IRC頻道,或者在GitHub上捐款。Pinterest、Netflix和LinkedIn等公司已將Flask納入其開發堆棧。Flask 1.0.2目前可用,是2018年5月發布的最新穩定版本。
優點
- Flask是輕量級和非侵入性的,減少了其他框架中的嚴格要求。開發人員將享受它與外部工具和ORM的兼容性。
- 它的依賴關系是在考慮安全性的情況下構建的。在客戶端享受免受注入攻擊、數據完整性檢查和安全cookie生成的默認保護。
- 內置的開發服務器不需要配置外部資源,從而減少了交付周期和成本。
- Flask支持Python 3.4及更新版本,同時也支持Python 2.7和PyPy。開發人員可以自由使用他們的首選版本,使API構建更加簡單。
- 文檔中有豐富的示例和廣泛的應用程序,其中概述了大量的用例和示例代碼。
缺點
- 對于較大的MVC應用程序,由于Flask并未附帶全面的引導工具和模塊,公司可能更傾向于選擇其他框架。
- 盡管 Flask 極具靈活性,但初始的自定義配置可能會延遲開發和上線進程。
2. Python API框架:Django
一個衡量其他強大框架的全面基準。
Django是Python開發中家喻戶曉的名字,自2005年首次亮相以來,它的人氣飆升。它由Django軟件基金會維護,這要歸功于個人和公司的貢獻,其中許多公司都依賴Django進行開發。Django有一個熙熙攘攘的社區,在全球擁有11600多名成員。Django在Stack Overflow上有超過191000個帶標簽的問題。開發人員可以參與郵件列表、RSS提要、IRC頻道等等。Spotify、YouTube和Instagram依靠Django進行應用程序和數據管理。這個小組與Django一起不斷發展,Django自創建以來已經發布了214多個更新。
優點
- Django社區的規模是驚人的——新手和老手都可以期待即使是最細粒度的用例也能得到大量的指導。
- 默認情況下,包括模板、路由、表單、身份驗證和管理工具。開發人員將不必尋找外部工具,尤其是當第三方組件可能面臨兼容性問題時。
- 針對用戶、循環和條件的簡單構造允許開發人員快速編寫大量新代碼。
- Django與MongoDB、DynamoDB、SQLite等的集成使其成為管理巨大數據集的強大工具。對于擁有大量用戶的應用程序來說,這是非常寶貴的。
- Django是一個成熟且優化的框架,開箱即用,速度極快,可靠性極高。
缺點
- Django使用空模板文件將新項目分離為單獨的組件。因為Django為新用戶提供的示例代碼較少,所以學習起來更為棘手。
- 由于沒有明確提供指導,新程序員可能會面臨將組件打包在一起的問題。
- 大量的默認工具使新手很難跟上進度。
3. Python API框架:Pyramid
這是一個混合框架,無論大小,都能帶來最好的結果。
Pyramid 是一個 web 開發框架,旨在在大型框架(如 Django)和微型框架(如 Flask)之間找到平衡點,既不過于龐大也不過于簡單。它是作為Pylons項目的一部分開發的,于2008年發布。Pyramid的靈感來源于Django和其他較小的框架。開發者可以通過Twitter和谷歌小組在社交媒體上關注Pyramid的進展。金字塔的開發者經常參加公共活動。最后,熱衷于了解更多關于該框架的開發人員可以加入官方IRC頻道。Mozilla和Yelp是依賴金字塔進行開發的著名公司。Pyramid的當前版本是1.10,這是它首次亮相以來的第十次更新。
好處
- 與Django相比,Pyramid為文件綁定提供了充足的指導,從而以更簡單的方式打包您的項目。這提供了一個安全網,尤其是對新來者來說。
- Pyramid創建了一個相當大的項目模板,但提供了充足的啟動代碼和框架來簡化開發。
- Pyramid的引導工具
pcreate
與許多基于SQLAlchemy和ZODB的模板兼容。PyPi支持Google App Engine、Jinja 2和jQuery Mobile,增強了這種靈活性。
- Pyramid允許開發人員快速擴展應用程序,并通過插件提供強大的API支持、URL映射和強大的可擴展性。
- 上下文管理器將請求分組并寫入邏輯組,這對于高流量時段非常有用。
- Pyramid 框架支持所有當前受支持的 Python 版本。
缺點
- Pyramid 使用的 Chameleon 模板引擎在語法上相對復雜,尤其對于不熟悉其特性的開發者來說可能會感覺如此。
- XHTML結構雖然可以由編輯器解析,但對于那些從Django遷移過來的人來說,它可能顯得陌生而復雜。
4. Python API框架:Falcon
專注于質量控制的高性能微服務框架。
Falcon 是一款專為微服務優化設計的裸金屬框架,其遵循WSGI規范,確保與多種服務器和平臺的兼容性。Falcon 由 Kurt Griffiths 于2013年創立,并且他是該框架的主要貢獻者。然而,一個專注的社區也為Falcon提供了大量的意見和貢獻。對于Falcon框架的新手,可以通過參加講座、播客節目和閱讀博客文章來跟進學習。同時,Gitter上有專門為開發者和用戶提供交流的聊天室。LinkedIn和Rackspace等公司在多個項目中都采用了Falcon框架。該框架在GitHub上擁有詳盡的文檔記錄,自發布以來已經發布了43次更新,目前版本為1.4.1。
優點
- Falcon與操作系統無關,專注于在任何給定的硬件上高效運行,并具有框架靈活性。
- 該框架與Python 2.6、2.7和3.4+協同工作。
- REST HTTP處理程序提供請求解析和簡單的狀態轉換。
- 對源代碼開發進行了廣泛的錯誤測試。Falcon只使用兩個第三方依賴項。
- 使用默認配置,Falcon在相同條件下每秒可以比Django多發出19倍的請求。
缺點
- Falcon不適合提供HTML頁面。
- 缺少內置的web服務器。
- 盡管文檔和教程很多,但通常不如Flask等框架的文檔和教程全面。
5. Python API框架:Eve
一個中等大小的框架,用來處理除廚房水槽以外的所有東西。
Eve是一個專注于web服務的REST API框架,它建立在Flask和Cerberus之上。Eve從根本上是通過CRUD實現構建的,并變得更加人性化。該框架由Nicola Iarocci編寫和維護,同時提供社區貢獻。它于2013年初發布。該項目在GitHub上保持活躍,有138名貢獻者。開發者也可以加入郵件列表,與Eve的IRC、谷歌群組和Stack Overflow一起保持信息暢通。自推出以來,Eve已經更新了33次,目前的版本是0.8.2。
優點
- Eve強調REST和全面的CRUD合規性,同時默認情況下提供必要的回退。
- 已知的數據庫集合自動作為資源端點。這些端點可針對每個用例進行自定義,并且可以在沒有客戶端輸入的情況下包括其他字段。
- Eve支持子資源端點和多項目端點,以增強URI的靈活性。
- MongoDB是本機支持的,社區擴展提供了與SQL、Elasticsearch和Neo4js的兼容性。
- 默認情況下支持篩選、排序、資源分頁和HATEOAS。
缺點
- Eve通常更適合中小型項目,因為大型項目可能難以大規模管理。
- 由于該框架相對來說是最低限度的,因此可能需要一些時間來尋找合適的擴展和最佳配置。
?6. Python API框架:CherryPy
一種具有細粒度配置潛力的面向對象方法。
CherryPy是另一個極簡主義的web框架,它是面向對象的,符合HTTP/1.1,旨在促進快速開發,同時縮小整體源代碼庫。它由雷米·德隆建造,于2002年發行。它現在由CherryPy團隊和開發社區維護。CherryPy有一個郵件列表。開發人員也可以加入該框架的谷歌小組、Gitter門戶或IRC頻道。CherryPy團隊正在接受GitHub上的提交和進一步貢獻。Netflix和Hulu使用CherryPy作為選定項目的構建塊。當前版本是18.1.0,這是開發生命周期中的第120個版本。
優點
- 面向對象編程可以在減少代碼庫大小的同時縮短開發時間。
- CherryPy具有用于緩存、會話、身份驗證和靜態內容的內置工具。
- 每個組件和資源都是可互換的,讓開發人員可以根據自己的需要進行自定義。
- 對于使用多個應用程序的開發人員來說,每個應用程序都可以獨立配置。
- 單線更新方法允許通過簡單的合并進行全局服務器配置。
- CherryPy既可以提供動態的、依賴于用戶的內容,也可以提供靜態資源。
- 內置對JSON編碼和解碼的支持,用于請求和響應。
缺點
- 盡管包含了會話等某些功能,但默認情況下可能不會啟用這些功能。開發人員必須記住手動啟用這些配置。
- 如果頁面處理程序編寫不正確,則具有權限的用戶可能會訪問存儲在服務器上的任何文件。
7. Python API框架:Bottle
一個微觀的、獨立的框架,具有充分的多功能性。
Bottle是用于API開發的WSGI微框架。Bottle的獨特之處在于它的單個文件模塊,除了Python的標準庫之外,它沒有任何依賴項。它由Marcel Hellkamp編寫和維護,最初于2009年發布。社區貢獻通過GitHub進行審查和接受。Bottle有一個博客和郵件列表,感興趣的開發人員也可以在Twitter上關注。免費節點聊天提供了一個額外的討論論壇。瓶子已經被Netflix用來處理一些核心功能。Bottle的當前版本是0.12.16,自發布以來已經更新了73次。
優點
- Bottle非常輕量級,可配置,支持mako、Jinja2和cheetah 模板。
- 內置的HTTP開發服務器支持paste、fapws3、bjoern、gae、cherrypy和其他WSGI服務器。
- 智能路由為請求和函數調用提供更清晰、可自定義和邏輯的URL。
- 外部庫的使用并非必需,這簡化了開發并減少了跨平臺問題。
缺點
- 除了模板搜索路徑之外,可能還需要絕對路徑。在某些情況下,Bottle可能無法找到您的模板。
- 開發人員必須在占位符中添加模式,以說明語法中的斜杠。
- 當在反向代理或負載均衡器后面進行本地操作時,Bottle可能會在傳輸過程中丟失一些數據。可能需要一種變通方法來確保客戶端的標頭完整性。
8. Python API框架:Tornado
一個健壯的框架,用于以最小的開銷處理高流量。
Tornado既是一個web框架,也是一個異步網絡庫,其構建目的是支持大量同時連接。它最初是在FriendFeed開發的,并于2010年首次亮相。Tornado主要由Ben Darnell與GitHub社區共同維護。開發人員可以通過郵件列表和兩個獨立的谷歌小組來跟蹤新聞和更新。Tornado還聲稱有一個Stack Overflow,并在GitHub上維護了一個wiki。Tornado目前已更新到6.0版本,自發布以來已發布56個更新。
好處
- 通過無阻塞的網絡I/O,Tornado可以支持數萬個同時連接,適用于長輪詢、WebSockets等。
- 支持與OpenID、OAuth和Graph API(Google、Facebook、Twitter)結合使用的第三方登錄。
- Tornado可以自動重新加載服務器連接,以檢測和應用源文件更改。
- 與WSGI web框架和服務器一起運行。
缺點
- 由于Tornado是異步的,因此使用
WSGIContainer
運行WSGI應用程序的可擴展性不如使用WSGI服務器(例如gunicorn和uwsgi)運行該應用程序。
- 由于其相對新穎的聯網方法,可能存在與龍卷風相關的學習曲線。
- 沒有ORM支持。
參考說明
原文鏈接: https://nordicapis.com/8-open-source-frameworks-for-building-apis-in-python/
我們有何不同?
API服務商零注冊
多API并行試用
數據驅動選型,提升決策效率
查看全部API→