在前面的章節我們已經對於Django有了基本的認識,也因此我們能認知Django是能夠直接開發API的。那為什麼我們還需要學習或是使用Django REST framework(DRF)呢?
今天的重點如下:
Django我們會說是一個全端框架,主要的目的是要建立完整的Web應用,但是現階段前後端分離還是顯學的現在,DRF更專精在API開發上就是其發揮作用的地方
BasicAuthentication
與SessionAuthentication
,DRF還包含TokenAuthentication
與JWT認證可供使用雖然全端框架興起,但是大多是提升全棧開發的一致性,例如都是Javascript或是Typescript開發,或是搭配新的Web技術,在效能有提升,又或是在SSR、ISR技術的補強,反之這些都不會是Django的強項,但是因為DRF具備Django強大的ORM,以及完善的驗證與安全系統,在API領域有自己的優勢區間進而讓Django也保持一定的競爭力
DRF在Django支援非同步視圖以及最重要的ORM操作也支援非同步後有了更好的支援,提高了部分場景下的性能,不過因為DRF強項的Class-based view
(CBV)再加上認證系統,如果納入了非同步可能在開發上也會有許多要注意的地方,如下方的連結:
https://github.com/encode/django-rest-framework/discussions/7774
加上我在應用上沒有實際使用過非同步的CBV,因此就不特別展開介紹了
ViewSet
與Router
在不需要太多自定義方法的時候,可以大幅簡化實現CRUD的API所需程式碼DRF雖然是Django中相當流行的框架,但是確實面臨如FastAPI、Starlette還有同為基於Django的Django Ninja的挑戰,DRF在性能、API設計與非同步支援程度上都沒有特別突出的部分。但是正如同我們前面提到,Django因為DRF還保有一定的競爭力,DRF也因為背後有Django這個老大哥,也還是有自己的優勢區間
雖然在2024學習DRF不一定是一個好的選擇,但是因為他基於Django,所以我覺得DRF還是一個很好的學習錨點,正因為DRF跟Django一樣都是大而全的特性,我們才能在學習的過程能夠更全面的了解開發時的不同面向,讓你在學習其他框架或是語言時有更好的基礎或是對於系統架構更有想法