【Python 技術選型】如何選出適合的API框架呢?

閱讀時間約 4 分鐘
raw-image



當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端時代的來臨, 所有的繁重工作都可以在遠處而不會是各台手機或者電腦, 那麼這些裝置究竟要怎麼跟遠處的伺服器溝通呢? 這中間的溝通格式就是API(應用程式介面), 也就是機器與機器之間能夠理解的語言。


那麼Python的生態圈也誕生了許多的API框架, 包括最早期的Django, 以及中期發展的Flask, 到最後的新星 FastAPI, 各個框架都有各自的優劣之處, 並非絕對的好壞, 而是取決於我們什麼樣的需求選擇什麼樣的框架, 那麼這邊就稍微列出三者的優缺點與適用場景。


Django、Flask、FastAPI 應該如何選擇呢?

Django

💡 最早期的一套框架, 功能也非常的完整, 但包袱太大, 早期以WSGI進行開發, 後期才加入ASGI, 至於好不好用就需要自行研讀囉! 就像是老屋翻新一樣, 有的人覺得習慣,但有的人卻喜歡較新的格局設計。

優點:

  • 完整的生態系統,提供了ORM、表單處理、認證等功能。
  • 社群龐大,有豐富的第三方函式庫和文件支援。
  • 自帶的管理後台可快速建立和管理資料模型。

缺點:

  • 相對於輕量級框架,Django 學習曲線較陡。
  • 靈活性相對較低,對於特定需求的客製化可能需要花費更多時間。

適用場景:

  • 中大型 Web 應用程式開發。
  • 對安全性和穩定性要求較高的項目。
  • 需要內建管理後台或有大量 CRUD 操作的項目。

Flask

💡 中期發展的框架, 也相對的成熟, 但與 Django 一樣初期基於WSGI後續才加入了ASGI。

優點:

  • 輕量級且靈活,可根據需求自由選擇擴展。
  • 學習曲線較低,容易入門。
  • 高度可自訂,可根據專案需求選擇不同的庫和插件。

缺點:

  • 對於大型應用程序,需要手動選擇和配置各種組件,增加了開發工作量。
  • 由於靈活性,可能需要花費更多時間來建立一些高級功能。

適用場景:

  • 小型專案或原型快速開發。
  • 需要客製化程度高、對效能要求不是很高的專案。
  • 對於單一功能的微服務。

FastAPI

💡 後起的新秀, 整合了WSGI與ASGI的協議規範, 讓同步與非同步的傳輸協議更加的自然。

優點:

  • 極為快速,效能優異,支援非同步請求處理。
  • 自動產生互動式 API 文檔,簡化了 API 文件編寫和維護的工作。
  • 類型提示支持,提高了程式碼的可讀性和可維護性。

缺點:

  • 相對較新,社區生態可能不如 Flask 和 Django 穩定和完善。
  • 學習曲線相對較陡,特別是對於不熟悉非同步程式設計的開發者。

適用場景:

  • 需要高效能的 API 服務,特別是在處理大量請求或需要高並發效能的情況下。
  • 對 API 文件產生和維護要求較高的項目。
  • 對於即時性要求較高的應用場景,如聊天應用程式、即時通知等。


什麼是WSGI與ASGI

上述的簡介我們常常提到WSGI與ASGI, 這兩者究竟是什麼呢? 歡迎參考:

🌀 【Python 知識科普】 關於WSGI與ASGI


我們除了列出優缺之外, 更重要的是釐清需求

在這邊我們試著盡可能的實際列出開發上的需求, 那麼假設我們的應用是一個語音辨識引擎…, 那麼可能會這樣去分析我們所需的框架。

raw-image



從成本、品質、效率這三個面向去一一列出我們的需求並試著落在三者的區塊之上,最終就可以得出哪些部份對於我們的應用來說是比較需要的, 那麼就可以從刪去之後的面向去分析相關的框架,最終選出最適合的框架。

總結

框架的選擇取決於需求, 無論選擇哪種框架,都需要考慮專案規模、開發效率、效能、可維護性等因素。


Flask適合小型專案和需要框架靈活性的開發人員,Django適合建立複雜的Web應用程式和CMS,FastAPI適合建立高效能即時應用程式。


在選擇Python作為Web開發語言時,必須考慮專案的需求和特點,以及技術團隊和可用的時間和資源等因素。

116會員
257內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
關於Websockets的篇章, 有興趣的朋友歡迎參考: 【Python 軍火庫 - websockets】雙向溝通的渠道 【Python 軍火庫 - websockets】用json來溝通吧! 而這一篇章的主題主要是來分享如何透過websockets傳遞音檔並進行解碼, 我們都知道聲
本文介紹了Python如何使用websockets進行雙向溝通,包括文字、json、xml和音訊的傳遞。特別著重於json資料交換格式,以及websockets通道的基本流程和關鍵的編碼與解碼。最終談到WebSocket對於傳統同步程式的轉變及對asyncio等套件的重要性。
我們常常在看開源專案時, 會在函式中看到「*args」與「**kwargs」這兩個參數, 一直以來都很好奇也尚未使用, 趁著好奇心強烈的時期趕緊來了解一番, 並且將學習過程轉化為易懂的概念提供給有需要的朋友參考, 也期望我們能夠共同學習程式語言, 讓科技引領世界進步。 首先是 *args 會
Websocket是一種網路傳輸的協定,讓建立一次handshake的過程就可以相互傳遞資料,而非同步的過程能夠讓處理事情更有效率,這篇文章將帶你深入瞭解Websocket如何運作、以及其特點與優勢。
當我們在進行影像處理時, 在Python的世界最常聽到的就是OpenCV, 而我們在處理影片時也會想要僅針對某時間段的影片進行處理, 今天我們就來教您如何透過OpenCV來讀取特定的時間區段。 在進入主題之前, 有一些基本概念務必先行建立, 一個影片是由多張圖片組成的, 因此最小單元為一張圖
當我們在進行「語音辨識」的應用開發時, 首先會面臨一個問題, 那就是究竟要怎麼知道哪些段落是「人在說話的區段」, 精確的標示出這些區段之後, 我們除了可以儲存成純對話的段落, 還可以做出時間軸的字幕檔, 應用非常廣泛, 因此學會怎麼用VAD是進入語音領域非常重要的其中一個環節。 VAD代表
關於Websockets的篇章, 有興趣的朋友歡迎參考: 【Python 軍火庫 - websockets】雙向溝通的渠道 【Python 軍火庫 - websockets】用json來溝通吧! 而這一篇章的主題主要是來分享如何透過websockets傳遞音檔並進行解碼, 我們都知道聲
本文介紹了Python如何使用websockets進行雙向溝通,包括文字、json、xml和音訊的傳遞。特別著重於json資料交換格式,以及websockets通道的基本流程和關鍵的編碼與解碼。最終談到WebSocket對於傳統同步程式的轉變及對asyncio等套件的重要性。
我們常常在看開源專案時, 會在函式中看到「*args」與「**kwargs」這兩個參數, 一直以來都很好奇也尚未使用, 趁著好奇心強烈的時期趕緊來了解一番, 並且將學習過程轉化為易懂的概念提供給有需要的朋友參考, 也期望我們能夠共同學習程式語言, 讓科技引領世界進步。 首先是 *args 會
Websocket是一種網路傳輸的協定,讓建立一次handshake的過程就可以相互傳遞資料,而非同步的過程能夠讓處理事情更有效率,這篇文章將帶你深入瞭解Websocket如何運作、以及其特點與優勢。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
firestore 是 google 所提供的雲端文件式資料庫服務,為各種開發工具提供了方便使用的 sdk,python 的套件名稱為 firebase-admin,用 pip 安裝後就可操作了。 pip install firebase-admin
Thumbnail
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
Thumbnail
如何計算某欄的平均數? 如何計算多個欄位的平均數? 如果想計算不同分組的平均數? 如何用Python計算某欄平均數 利用agg計算平均數 利用groupby建立分組,再用agg計算平均數
Thumbnail
Python是一款多功能且易於學習的程式語言,廣泛用於Web開發、數據分析和人工智能。學習起來有其挑戰性,但初學者可在短時間內體驗到成就感。市場對Python需求旺盛,成為職場上的重要技能。我們的課程提供從Python到PHP的全面學習,並重點教授實戰技巧如爬蟲和資料視覺化。現是投身編程的絕佳時機。
Thumbnail
介紹均線從數學上的本質、均線的種類,以及均線的延伸常見技術指標。另外會附上 Python 的實現算法(著重 SMA & EMA)。但不會介紹使用策略。 「取平均」是做統計分析裡面非常基礎、很早學到、常用的做法,而均線(Moving Average)也是技術指標當中最常被當第一個學習的指標。
Thumbnail
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
3分鐘學會用python計算加權指數報酬率,並且用pandas 進行條件篩選 濾掉金融海嘯時期,並篩選出漲跌幅大於1%的日期 https://youtu.be/EMfclSESgBo
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
Python 提供了一個功能豐富的標準函式庫,其中 random 專門用於生成隨機數。本文將介紹 random 的基本介紹,以及函式應用。
Thumbnail
firestore 是 google 所提供的雲端文件式資料庫服務,為各種開發工具提供了方便使用的 sdk,python 的套件名稱為 firebase-admin,用 pip 安裝後就可操作了。 pip install firebase-admin
Thumbnail
首先安裝 python,依照 官網 的指示,下載正確的版本並執行就可,重點在以下。 虛擬環境的管理平台許多人使用 anaconda,許多教 python 的課程第一堂就是不管三七二十一先安裝再說,但我用了一陣子之後覺得它實在太笨重了,早有掙脫的想法,欣見原生的 python 已經具有虛擬環境管理模
Thumbnail
如何計算某欄的平均數? 如何計算多個欄位的平均數? 如果想計算不同分組的平均數? 如何用Python計算某欄平均數 利用agg計算平均數 利用groupby建立分組,再用agg計算平均數
Thumbnail
Python是一款多功能且易於學習的程式語言,廣泛用於Web開發、數據分析和人工智能。學習起來有其挑戰性,但初學者可在短時間內體驗到成就感。市場對Python需求旺盛,成為職場上的重要技能。我們的課程提供從Python到PHP的全面學習,並重點教授實戰技巧如爬蟲和資料視覺化。現是投身編程的絕佳時機。
Thumbnail
介紹均線從數學上的本質、均線的種類,以及均線的延伸常見技術指標。另外會附上 Python 的實現算法(著重 SMA & EMA)。但不會介紹使用策略。 「取平均」是做統計分析裡面非常基礎、很早學到、常用的做法,而均線(Moving Average)也是技術指標當中最常被當第一個學習的指標。
Thumbnail
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
在這篇文章中,我們將講解一些常見的語音技術以及如何在Python中使用這些技術。 安裝套件 匯入套件 語音辨識:
Thumbnail
在樹莓派安裝OpenCV的紀錄。板子是樹莓派3B(沒有+),系統raspbian bullseye 32bit灌到USB隨身碟。
Thumbnail
3分鐘學會用python計算加權指數報酬率,並且用pandas 進行條件篩選 濾掉金融海嘯時期,並篩選出漲跌幅大於1%的日期 https://youtu.be/EMfclSESgBo