為何選擇 Tastypie
Django 還有其他 API 框架。你需要評估可用的選項並自行決定。也就是說,以下是 tastypie 的一些常見原因。
- 你需要一個 RESTful 的 API 並且很好地使用 HTTP。
- 你想支援深層關係。
- 你不希望必須編寫自己的序列化程式才能使輸出正確。
- 你需要一個 API 框架,它具有很少的魔力,非常靈活,可以很好地對映到問題域。
- 你希望/需要與 JSON 同等對待的 XML 序列化(並且 YAML 也在那裡)。
要使用 Django 開發 API,我們有很多選擇。主要選項是 Tastypie 和 Django Rest Framework (DRF)。
什麼是一個體面的 API 框架?
這些功能:
- 分頁
- 通過驗證釋出資料
- 與後設資料一起釋出後設資料
- API 發現
- 正確的 HTTP 響應處理
- 快取記憶體
- 系列化
- 節流
- 許可權
- 認證
適當的 API 框架還需要:
-
真的很好的測試覆蓋他們的程式碼
-
體面的表現
-
文件
-
一個積極的社群,以推動和支援該框架
如果你採用這些因素,目前只有兩個值得使用的 API 框架(取決於使用者檢視),django-tastypie 和 django-rest-framework。
哪一個更好?django-tastypie 或 django-rest-framework?
我說他們是相等的。你根本不會出錯任何一個。兩者背後的作者和社群都很活躍,程式碼很紮實,經過測試。以下是我對這兩者的具體想法:
Tastypie:
好處:
- 易於入門並提供基本功能 OOB(開箱即用)
- 大多數情況下,你不會處理像 CBV,Forms 等高階 Django 概念
- 更可讀的程式碼,更少的魔力!
- 如果你的模型是非 ORM,那就去吧。
缺點:
- 不嚴格遵循慣用的 Django(心靈 Python 和 django 的哲學是完全不同的)
- 一旦你變大,可能有點難以定製 API
- 沒有 O-Auth
DRF:
好處:
-
跟隨慣用的 django。 (如果你知道 django 裡面外出,並且非常適應 CBV,Forms 等毫無疑問的去吧)
-
使用 ModelViewSets 提供開箱即用的 REST 功能。同時,使用 CustomSerializer,APIView,GenericViews 等提供更好的自定義控制。
-
更好的認證。
-
更容易編寫自定義許可權類。
-
工作非常好,非常容易使其與第三方庫和 OAuth 一起使用。
-
DJANGO-REST-AUTH 值得一提的是用於 Auth / SocialAuthentication / Registration 的 LIBRARY。
缺點:
- 如果你不太瞭解 Django,請不要這樣做。
- 魔法! 有些時候很難理解魔法。
- 因為它是在 django 的 CBV 之上編寫的,而後者本質上相當複雜。
- 學習曲線陡峭。