Frage

Warum sollten Sie einen übereinander verwenden, um eine API für Ihre Django -App aufzudecken?

http://pypi.python.org/pypi/djangorestframework/

http://pypi.python.org/pypi/django-tastypie

War es hilfreich?

Lösung

Als Autor von Django-REST-Framework habe ich eine offensichtliche Tendenz;), aber meine hoffnungsvoll fair-objektive Meinung dazu ist so etwas wie:

Tastypie

  • Wie Torsten bemerkte, werden Sie mit etwas, das von den gleichen Blicke wie das Awesome geschrieben wurde Django-Haystack. Nach dem, was ich auf ihrer Mailingliste gesehen habe, sind Daniel Lindsey et al. Supershelpul, und Tastypie ist stabil, umfassend und gut dokumentiert
  • Ergreift Ihnen ein vernünftiges Standardverhalten und macht den Aufbau einer API mit diesem Stil unglaublich einfach.

Django Rest Framework

  • Gibt Ihnen HTML-durchsucht, die sich selbst entschrieben. (ZB sehen Sie die Tutorial -API.) Es ist ein großer Gewinn der Benutzerfreundlichkeit, mit der API direkt im Browser zu navigieren und mit der API zu interagieren.
  • Versucht, Django -Idioms durchgehend in der Nähe zu bleiben - auf Djangos klassenbasierten Ansichten aufgebaut (während Tastypie vor Djangos CBVs vorhanden ist, nutzt daher die eigene klassenbasierte Implementierung der eigenen klassenbasierten Ansichten)
  • Ich würde gerne denken, dass die zugrunde liegende Architektur ziemlich gut gebaut, entkoppelt usw. ist ...

In jedem Fall sind beide gut. Ich würde Tastypie wahrscheinlich so charakterisieren, dass Sie Ihnen einen vernünftigen Satz von Standardeinstellungen außerhalb der Box geben und das REST -Framework als sehr schön entkoppelt und flexibel sind. Wenn Sie vorhaben, viel Zeit in die API zu investieren, würde ich auf jeden Fall empfehlen, die Dokumente und Codebasis eines jeden zu durchsuchen und zu versuchen, ein Gefühl zu bekommen, für das Sie mehr passen.

Offensichtlich gibt es auch die "Warum Tastypie?" Abschnitt in der Readme und der 'REST -Framework 3'.

Siehe auch Daniel Greenfelds Blog -Beitrag auf Auswahl eines API -Frameworks für Django, ab Mai 2012 (erwähnenswert, dass dies noch einige Monate vor der Veröffentlichung des Big Rast Framework 2.0 dauerte).

Auch ein paar Themen auf Reddit mit Leuten, die dieselbe Frage stellen, von Dezember 2013 und Juli 2013.

Andere Tipps

Beide sind gute Entscheidungen.

Für Filter ist Tastypie mächtiger außerhalb des Boxs. Wenn Sie eine Ansicht haben, die ein Modell enthüllt, können Sie Ungleichheitsfilter im Django-Stil durchführen:

http://www.example.com/api/person?age__gt=30

oder oder Fragen:

http://www.example.com/api/mymodel?language__in=en&language__in=fr

Diese sind mit djangorestframework möglich, aber Sie müssen benutzerdefinierte Filter für jedes Modell schreiben.

Für Tracebacks war ich von Django-REST-Framework mehr beeindruckt. Tastypie versucht eine E -Mail settings.ADMINS auf Ausnahmen wann DEBUG = False. Wann DEBUG = True, Die Standardfehlermeldung ist serialisiert JSON, was schwerer zu lesen ist.

BEARBEITEN Veraltete Antwort, Tastypie ist nicht mehr wirklich gepflegt. Verwenden Sie Django Rest Framework, wenn Sie ein Framework auswählen müssen, um sich auszuruhen.

Für einen Überblick über die tatsächlichen Unterschiede zwischen beiden sollten Sie ihre Dokumentation lesen. Sie sind beide mehr oder weniger vollständig und ziemlich reif.

Ich persönlich neige aber zu Tastypie. Es scheint einfacher zu sein, es einzurichten. Es wird von denselben Menschen geschaffen, die geschaffen wurden Django-Haystack Was fantastisch ist und laut Django-Packages Es wird mehr als Django -REST -Framework verwendet.

Es ist erwähnenswert, dass DRF, da dies zum ersten Mal gefragt wurde, von Stärke zu Stärke geworden.

Es ist der aktivere von beiden auf Github (sowohl in Bezug auf Commits, Sterne, Gabeln und Mitwirkende)

DRF hat die Unterstützung von OAuth 2 und die durch Browsable API.

Ehrlich gesagt für mich ist das letzte Feature der Killer. In der Lage zu sein, alle meine Front-End-Entwickler auf die Browsable-API zu richten, wenn sie sich nicht sicher sind, wie etwas funktioniert, und sagen: „Gehen Sie spielen. Finden Sie heraus, ist fantastisch.

Nicht zuletzt, weil es bedeutet, dass sie es zu ihren eigenen Bedingungen verstehen und wissen, dass die API wirklich definitiv das tut, was die Dokumentation sagt. In der Welt der Integration in APIs macht diese Tatsache allein DRF zum Rahmen.

Eine Sache, die ich beides verwendet habe, das ich an Django Rest Framwork mochte (bevorzugt), ist sehr übereinstimmend mit Django.

Das Schreiben von Modellserializern ist dem Schreibmodellformulare sehr ähnlich. Die eingebauten generischen Ansichten sind der generischen Ansichten von Django für HTML sehr ähnlich.

Nun, Tastypie und DRF sind beide hervorragende Möglichkeiten. Sie einfach kippen Gehen Sie mit einem von beiden etwas falsch. (Ich habe nie an Kolben gearbeitet; und es ist jetzt nicht mehr ein Trend mehr, also werde / kann es nicht kommentieren. Ich kann es nicht kommentieren. Meiner bescheidenen Meinung nach: Die Auswahl sollte in Ihren Fähigkeiten, Kenntnissen und Fähigkeiten Ihres Tech -Teams (und Ihren Tech -Teams) getroffen werden. Anstatt dass Tastypie und DRF angeboten werden, es sei denn, Sie bauen etwas wirklich Großes wie Quora, Facebook oder Google auf.

Persönlich habe ich zu einer Zeit zuerst an Tastypie gearbeitet, als ich Django nicht einmal richtig kannte. Zu dieser Zeit machte alles Sinn, nur Ruhe und HTTP sehr gut zu kennen, aber mit fast keinem oder wenig Wissen über Django. Denn meine einzige Absicht war es, in kürzester Zeit erholsame APIs aufzubauen, die in mobilen Geräten konsumiert werden sollten. Wenn Sie also genau wie "Ich bin zu dieser Zeit Django-New-Bie genannt", bin ich genau wie "Ich bin zufällig Django-new-bie", " Denken Sie nicht mehr für Tastypie.

Aber wenn Sie viele haben Jahre Erfahrung in der Arbeit mit Django weiß es innen und sehr bequem mit erweiterten Konzepten (wie klassenbasierten Ansichten, Formularen, Modellvalidator, Queryset, Manager und Modellinstanzen und wie alles, was sie miteinander interagieren), ** Gehen Sie für DRF. ** DFR ist Basis auf Djangos klassenbasierten Ansichten. DRF ist idiomatisch Django. Es ist so, als würden Sie Modellformulare, Validatoren usw. schreiben (nun Das ist auch DRF). DRF verfügt über viele eingebaute magische Methoden wie Django. Wenn Sie die magischen Methoden und Philosophie von Django lieben ** DRF ** ist nur für Sie.

Nun, nur um die genaue Frage zu beantworten:

Tastypie:

Vorteile:

  1. Einfach zu beginnen und grundlegende Funktionen zu liefern OOB (außerhalb der Schachtel)
  2. Meisten
  3. Mehr lesbarer Code und weniger Magie!
  4. Wenn Ihre Modelle nichtmaterial sind, machen Sie es.

Nachteile:

  1. Verfolgt nicht strikt idiomatisch Django (Geist Well Python und Djangos Philosophien sind ganz anders)
  2. Wahrscheinlich ist es ein bisschen schwer, APIs anzupassen, sobald Sie groß sind
  3. Nein O-auth

DRF:

  1. Folgen Sie idiomatischem Django. (Wenn Sie Django innen nach außen kennen und mit CBV, Formen usw. ohne Zweifel sehr bequem.)
  2. Bietet außerhalb der Box REST -Funktionalität mithilfe von ModelViewsets. Bietet gleichzeitig eine bessere Kontrolle für die Anpassung mit CustomSerializer, Apiview, GenericViews usw.
  3. Bessere Authentifizierung. Einfacher zu schreiben benutzerdefinierte Berechtigungskurse. Arbeiten Sie sehr gut und vor allem sehr einfach, damit es mit Bibliotheken von Drittanbietern und OAuth funktioniert. Django-rest-auth ist es wert, Bibliothek für Auth/SocialAuthentication/Registrierung zu erwähnen. (https://github.com/tivix/django-rest-auth)

Nachteile:

  1. Wenn Sie Django nicht sehr gut kennen, machen Sie dies nicht.
  2. Magie! Einige Zeit sehr schwer zu verstehen. Weil es über Djangos CBV geschrieben wurde, das wiederum ziemlich komplex ist. (https://code.djangoproject.com/ticket/6735)
  3. Hat eine steile Lernkurve.

Persönlich, was würde ich in meinem nächsten Projekt verwenden?

  • Jetzt bin ich kein Fan von Magie und Out-of-Box-Funktionen mehr. Weil sie nur tolle Kosten kommen. * Angenommen, ich habe alle Auswahlmöglichkeiten und Kontrolle über Projektzeit und Budget, würde ich mit etwas geringem Gewicht wie unruhig beginnen (unruhig (https://github.com/toastdriven/restless) (Erstellt vom Schöpfer von Tastypie und Django-Haystack (http://haystacksearch.org/)). Und für dieselbe Angelegenheit wählen Sie wahrscheinlich/definitiv das leichte Web -Framework wie wie Flasche.

  • Aber wieso? - Lesbarer, einfacher und überschaubarer idiomatischer Python -Code (auch bekannt als pythonisch). Obwohl mehr Code, aber schließlich eine große Flexibilität und Anpassung bieten.

    • Explizit ist besser als implizit.
    • Einfach ist besser als komplex.
    • Komplex ist besser als kompliziert.
    • Wohnung ist besser als verschachtelt.
    • Spärmer ist besser als dicht.
    • Lesbarkeit zählt.
    • Besondere Fälle sind nicht besonders genug, um die Regeln zu verstoßen.

Was ist, wenn Sie nur keine Wahl haben als Django und eines von Tastypie und DRF?

  • Jetzt, da ich den Django einigermaßen gut kenne, werde ich mit ** drf gehen. **
  • Wieso den? - idiomatisches Djagno! (Ich liebe es aber nicht). Bessere Integration von OAuth und 3. Party (Django-rest-auth ist mein Favorit).

Warum haben Sie sich dann zunächst die DRF/Tastypie ausgewählt?

  • Meistens habe ich mit Startups und kleinen Firmen gearbeitet, die in Bezug auf Budget und Zeit eng sind. und müssen etwas schnelles und nutzbares liefern. Django dient diesem Zweck sehr gut. (Ich sage überhaupt nicht, dass Django nicht skalierbar ist. Es gibt Websites wie Quora, Disquss, YouTube usw., aber alles erfordert Zeit und mehr als durchschnittliche Fähigkeiten)

Ich hoffe, es wird Ihnen helfen, eine bessere Entscheidung zu treffen.

Andere Referenzen -1. Der Zustand des Geschmacks (http://toastdrizen.com/blog/2014/may/23/state-tastypie/) 2. Was sind die Unterschiede zwischen Django-Tastypie und Djangorestframework? (Was sind die Unterschiede zwischen Django-Tastypie und Djangorestframework?)

Django-Tastypie wird von seinem ursprünglichen Schöpfer nicht mehr aufrechterhalten und er hat ein eigenes neues Leichtgewichtsgerüst erstellt.

Derzeit sollten Sie Django-REST-Framework mit Django verwenden, wenn Sie bereit sind, Ihre API aufzudecken.

Große Unternehmen verwenden es. Django-REST-Framework ist ein Kernmitglied des Django-Teams und er erhält Finanzmittel, um Django-REST-Framework zu erhalten.

Django-REST-Framework hat auch eine große Anzahl von immer wachsenden dritten Künstlerpaketen, die Ihnen helfen, die Ihrer APIs leichter mit weniger Problemen aufzubauen.

Ein Teil von DRF wird auch in Django geeignet zusammengeführt.

DRF bietet bessere Muster und Werkzeuge als Django-Tastypie.

Kurz gesagt, es ist gut gestaltet, gut gepflegt, finanziert und bietet riesige Apps von Drittanbietern, die von großen Organisationen vertrauen, einfacher und weniger Kesselplatten usw. gegenüber Tastypie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top