【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開發語言時,必須考慮專案的需求和特點,以及技術團隊和可用的時間和資源等因素。

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
132會員
299內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
阿Han的沙龍的其他內容
2025/04/23
我們在「【🤖 cursor AI】如何在ubuntu 24.04安裝」有分享如何在Ubuntu安裝cursro這套AI編輯器, 使用起來大幅度的提昇開發效率, 但仍有些問題點需要克服, 比如說: LLM壓根不知道我們的數據庫長怎樣啊? 怎麼分析結構呢? 假設文檔又不足的狀況下更是艱辛, 如果LLM
Thumbnail
2025/04/23
我們在「【🤖 cursor AI】如何在ubuntu 24.04安裝」有分享如何在Ubuntu安裝cursro這套AI編輯器, 使用起來大幅度的提昇開發效率, 但仍有些問題點需要克服, 比如說: LLM壓根不知道我們的數據庫長怎樣啊? 怎麼分析結構呢? 假設文檔又不足的狀況下更是艱辛, 如果LLM
Thumbnail
2025/03/12
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」分享了語音合成技術, 該套GPT-SoVITS也非常的出色, 但效能有點不是非常理想, 加上需要GPU才能達到較佳的體驗, 如此一來成本就會有點高了, 因此我們找了另外一套MeloTTS, 這一套強調CPU推理非常的快!
Thumbnail
2025/03/12
我們在「【語音合成技術 - GPT-SoVITS】讓機器說人話的語音生成服務」分享了語音合成技術, 該套GPT-SoVITS也非常的出色, 但效能有點不是非常理想, 加上需要GPU才能達到較佳的體驗, 如此一來成本就會有點高了, 因此我們找了另外一套MeloTTS, 這一套強調CPU推理非常的快!
Thumbnail
2025/03/05
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
Thumbnail
2025/03/05
我們在「【語音合成技術 - GPT-SoVITS】如何架設API伺服器」分享如何架設API V3版本的TTS服務, 但發音的部份似乎只有早期的API版本才使用到g2pw這類的技術, 因此我們可能會需要將API退回舊版, 在這裡我們也整理了早期版本api與api_v2的一些差異, 期望幫助到正在面臨選
Thumbnail
看更多
你可能也想看
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
前段時間我們有介紹「【Python 軍火庫🧨 - websockets】雙向溝通的渠道」, 這種方式可以達到基本的連線沒問題,但隨著資安意識的抬頭, 我們的websocket連線也會需要在通道之上進行加密, 那麼我們將根據使用情境來教您如何選用適當的連線。 Server端 我們的Serve
Thumbnail
前段時間我們有介紹「【Python 軍火庫🧨 - websockets】雙向溝通的渠道」, 這種方式可以達到基本的連線沒問題,但隨著資安意識的抬頭, 我們的websocket連線也會需要在通道之上進行加密, 那麼我們將根據使用情境來教您如何選用適當的連線。 Server端 我們的Serve
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
在Python中,import是一個關鍵字,用於將其他模組或套件中的程式碼引入到當前的程式中以供使用。 這個關鍵字允許你在你的程式中使用其他地方定義的變數、函式和類等。 當你使用import時,Python會搜索指定模組或套件的位置,並將其中的程式碼載入到你的程式中,這樣你就可以在程式中使用它們
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News