選擇任何工具之前,我們通常會先了解它能解決的問題,以及是否符合與自己的需求。
本文將介紹 Django Ninja 這個現代化的 API 框架,探討它的起源和主要特點,並重點比較它與 Django REST Framework 之間的差異,讓你能夠更好地選擇適合的工具。
Django Ninja 的起源與 FastAPI 有著密切的關係。
Django Ninja 可以被視為「Django 版的 FastAPI」,它比原生 FastAPI 能夠更好地與 Django 整合。
Django Ninja 的官方文件中,作者 Vitaliy Kucheryaviy 解釋了為什麼建立這個框架。這源於他在 Django 專案中使用 FastAPI 時遇到的一些挑戰,特別是在整合方面。
因此,他決定自己建立一個更合適的工具,從而誕生了 Django Ninja。
可想而知,Django Ninja 深受 FastAPI 的啟發。事實上,它同時也借鑑了不少 Django REST Framework 的優秀實踐——這是後發者的優勢!
文件中引用了這麼一句話,這是個常見的疑問:
Django Ninja looks basically the same as FastAPI, so why not just use FastAPI?
答案就是:兩者的整合不完美,而 Django Ninja 提供了一個更加適合 Django 開發者的版本。
Django Ninja 的一些關鍵特性,使其成為 Django API 開發者的優秀選擇:
了解 Django Ninja 的特點後,不得不再次強調它對非同步的支援,這是 Django Ninja 相較於傳統同步框架如 Django REST framework 一大效能優勢。
從上圖中可知,在相對高並行(concurrency=50)的網路請求情境下,Django Ninja 的處理能力明顯優於 Flask + Marshmallow 和 Django REST framework。
非同步的好處在只有 1 個 worker 時更加明顯,這對於節省資源和提高效能都有著重要意義。
了解了 Django Ninja,我們來比較它和 Django REST Framework 的差異。
剛進入 Python 後端開發領域的讀者,可能未必熟悉 Django REST Framework,可以參考我寫過的這篇〈Django REST framework 教學(一)前言篇〉介紹。
文中還說明了,為何 Django 需要像 Django REST Framework 這樣的 API 框架。
Django REST Framework 和 Django Ninja 都是 Django 生態系中,用於快速建立 API 的強大工具,而且前者的歷史悠久得多。
但它們在設計理念、功能實現上存在顯著差異。對我而言,它們甚至可以說是完全不同的工具😎
下面三個部分,總結了我個人認為兩者的主要區別。
Django Ninja 和 Django REST Framework 有著各自的優勢:
透過本文的介紹,相信你對 Django Ninja 有了更加清晰的認識。
接下來的教學中,我們將深入探討 Django Ninja 的各個部分,幫助你更好地掌握這個現代化的 API 開發工具。
不過在此之前,我們還有一個重要的前置主題:範例專案與環境設定。這會是我們學習 Django Ninja 的第一步。
本文同步發表於我的部落格——Code and Me
小建議,首次提及 DRF 前可能要有個地方說明 Django REST Framework (以下簡稱 DRF)
我一開始看到 "主要功能差異" 這段時候,還以為 DRF 是什插件的我漏看了,回去翻閱才知道應該是 Django REST Framework 的縮寫。
感謝提醒,尤其本文 Django REST Framework 出現多次,一下子簡稱一下子全稱,容易讓人混亂,我改成在中段以下使用簡稱(因為前面還需要數次提到全稱)
之後的文章會特別注這點,還好才發到第 4 篇,哈哈哈,再次表示謝意