Perché dovresti usarne uno sopra l'altro per esporre un'API per la tua app Django?
Perché dovresti usarne uno sopra l'altro per esporre un'API per la tua app Django?
Risposte:
Come autore di django-rest-framework, ho un evidente pregiudizio;) ma la mia opinione, si spera, abbastanza obiettiva su questo, è qualcosa del tipo:
In ogni caso, entrambi sono buoni. Probabilmente definirei Tastypie come una serie ragionevole di impostazioni predefinite e il framework REST è molto ben disaccoppiato e flessibile. Se stai pensando di investire molto tempo nell'API, ti consiglio di sfogliare i documenti e la base di codice di ciascuno e cercare di avere un'idea di quello che ti si addice di più.
Ovviamente, c'è anche il 'Why TastyPie?' sezione in esso è README e il 'REST framework 3' .
Vedi anche il post sul blog di Daniel Greenfeld sulla scelta di un framework API per Django , a partire da maggio 2012 (vale la pena notare che questo era ancora pochi mesi prima della grande versione REST framework 2.0).
Anche un paio di thread su Reddit con la gente che chiede la stessa domanda, da dicembre 2013 e luglio 2013 .
Entrambe sono buone scelte.
Per i filtri, tastypie è più potente e pronto all'uso. Se hai una vista che espone un modello, puoi fare i filtri di disuguaglianza in stile Django:
http://www.example.com/api/person?age__gt=30
o richieste OR:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
questi sono possibili con djangorestframework, ma devi scrivere filtri personalizzati per ogni modello.
Per quanto riguarda i traceback, sono stato più colpito da django-rest-framework. Tastypie prova a inviare e-mail settings.ADMINS
su eccezioni quando DEBUG = False
. Quando DEBUG = True
, il messaggio di errore predefinito è JSON serializzato , che è più difficile da leggere.
DjangoFilterBackend
come documentato dal framework REST qui: django-rest-framework.org/api-guide/filtering#api-guide
EDIT Risposta obsoleta, tastypie non è più davvero mantenuto. Usa il framework Django REST se devi scegliere un framework per eseguire REST.
Per una panoramica delle effettive differenze tra i due è necessario leggere la loro documentazione. Sono entrambi più o meno completi e abbastanza maturi.
Personalmente tendo a provare la gastronomia. Sembra essere più facile da configurare. È fatto dalle stesse persone che hanno creato il pagliaio django che è fantastico e secondo i pacchetti django è usato più del framework Django REST.
Vale la pena notare che da quando è stato chiesto per la prima volta DRF è andato sempre più rafforzando.
È il più attivo dei due su github (sia in termini di commit, stelle, forchette e collaboratori)
DRF ha il supporto OAuth 2 e l'API navigabile.
Onestamente per me quell'ultima caratteristica è l'assassino. Essere in grado di indirizzare tutti i miei sviluppatori front-end all'API navigabile quando non sono sicuri di come funzioni qualcosa e dire 'Vai a giocare; scoprire 'è fantastico.
Non da ultimo perché significa che riescono a capirlo alle loro condizioni e sanno che l'API fa davvero, assolutamente, ciò che la "documentazione" dice che fa. Nel mondo dell'integrazione con le API, questo fatto da solo rende DRF il framework da battere.
django-tastypie-swagger
colma questa lacuna?
Bene, Tastypie e DRF sono entrambi eccellenti scelte. Semplicemente non puoi sbagliare con nessuno dei due. (Non ho mai lavorato su Piston; e il suo tipo di tendenza non è più al giorno d'oggi, quindi non posso / non posso commentarlo. Preso per scontato.). A mio modesto parere: la scelta dovrebbe essere fatta sulle tue abilità, conoscenze e capacità (e del tuo team tecnico). Piuttosto che su ciò che offre TastyPie e DRF, a meno che tu non stia costruendo qualcosa di veramente grande come Quora, Facebook o Google.
Personalmente, ho finito per iniziare a lavorare prima su TastyPie in un momento in cui non conoscevo nemmeno correttamente il django. Tutto aveva senso in quel momento, conoscendo solo REST e HTTP molto bene ma con una conoscenza quasi nulla o scarsa di django. Perché la mia unica intenzione era quella di creare in poco tempo API RESTful da consumare nei dispositivi mobili. Quindi, se sei come 'Mi capita di essere in quel momento chiamato django-new-bie', non pensare di più per TastyPie.
Ma se hai molti anni di esperienza di lavoro con Django, lo conosci a fondo e ti senti molto a tuo agio nell'utilizzare concetti avanzati (come viste basate su classi, moduli, validatore di modelli, QuerySet, Manager e istanze del modello e come interagiscono tra loro), * * scegli DRF. ** DFR si basa su viste basate sulla classe di django. DRF è un django idiomatico. È come se stessi scrivendo modelli di modelli, validatori, ecc. (Beh, il django idiomatico non è vicino al pitone idiomatico. Se sei un esperto di pitone ma non hai esperienza con Django, allora potresti avere difficoltà inizialmente ad adattarti alla filosofia del django idiomatico e per importa anche DRF). DRF viene fornito con molti metodi magici integrati proprio come il django. Se ami i metodi e la filosofia magici del django ** DRF ** è solo per te.
Ora, solo per rispondere alla domanda esatta:
Tastypie:
vantaggi:
svantaggi:
DRF:
svantaggi:
Personalmente cosa avrei usato nel mio prossimo progetto?
Ora, non sono più un fan delle funzionalità MAGIC e out-of-box. Perché tutto ciò ha un * grande costo. * Supponendo di avere tutte le scelte e il controllo sui tempi e sul budget del progetto, inizierei con qualcosa di leggero come RESTLess ( https://github.com/toastdriven/restless ) (creato dal creatore di TastyPie e django-haystack ( http: //haystacksearch.org/ )). E per lo stesso motivo probabilmente / sicuramente scegli il framework leggero come Flask.
Ma perché? - Codice pitone idiomatico (aka pythonic) più leggibile, semplice e gestibile. Anche se più codice, ma alla fine offre grande flessibilità e personalizzazione.
E se non avessi altra scelta che Django e uno di TastyPie e DRF?
Allora perché hai scelto DRF / TastyPie al primo posto?
Spero che ti aiuterà a prendere una decisione migliore.
Altri riferimenti - 1. The State of Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Quali sono le differenze tra django-tastypie e djangorestframework? ( Quali sono le differenze tra django-tastypie e djangorestframework? )
Avendo usato entrambi, una cosa che mi è piaciuta (preferita) di Django Rest Framwork è che è molto coerente con Django.
La scrittura di serializzatori di modelli è molto simile alla scrittura di moduli modello. Le viste generiche integrate sono molto simili alle viste generiche di Django per HTML.
Django-tastypie non è più gestito dal suo creatore originale e ha creato un suo nuovo framework leggero.
Al momento dovresti usare django-rest-framework con django se vuoi esporre la tua API.
Le grandi aziende lo stanno usando. django-rest-framework è un membro principale del team di django e ottiene finanziamenti per mantenere il django-rest-framework.
django-rest-framework ha anche un numero enorme di pacchetti 3rd art sempre crescenti che ti aiuteranno a costruire le tue API più facilmente con meno problemi.
Alcune parti del drf verranno anche unite nel django vero e proprio.
drf fornisce modelli e strumenti migliori rispetto a django-tastypie.
In breve, è ben progettato, ben mantenuto, finanziato, offre enormi app di terze parti, considerate affidabili da grandi organizzazioni, più semplici e meno eccitanti rispetto a tastypie.