為何選擇 Tastypie

Django 還有其他 API 框架。你需要評估可用的選項並自行決定。也就是說,以下是 tastypie 的一些常見原因。

  • 你需要一個 RESTful 的 API 並且很好地使用 HTTP。
  • 你想支援深層關係。
  • 你不希望必須編寫自己的序列化程式才能使輸出正確。
  • 你需要一個 API 框架,它具有很少的魔力,非常靈活,可以很好地對映到問題域。
  • 你希望/需要與 JSON 同等對待的 XML 序列化(並且 YAML 也在那裡)。

要使用 Django 開發 API,我們有很多選擇。主要選項是 TastypieDjango Rest Framework (DRF)。

什麼是一個體面的 API 框架?

這些功能:

  1. 分頁
  2. 通過驗證釋出資料
  3. 與後設資料一起釋出後設資料
  4. API 發現
  5. 正確的 HTTP 響應處理
  6. 快取記憶體
  7. 系列化
  8. 節流
  9. 許可權
  10. 認證

適當的 API 框架還需要:

  1. 真的很好的測試覆蓋他們的程式碼

  2. 體面的表現

  3. 文件

  4. 一個積極的社群,以推動和支援該框架

如果你採用這些因素,目前只有兩個值得使用的 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 之上編寫的,而後者本質上相當複雜。
  • 學習曲線陡峭。