Domanda

Perché dovresti usare uno sopra l'altro, per esporre un'API per la tua app Django?

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

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

È stato utile?

Soluzione

Come l'autore di django-riposo-quadro, ho un evidente pregiudizio;) ma il mio parere si spera-abbastanza-obiettivo su questo è qualcosa di simile:

TastyPie

  • Come Torsten ha osservato, non avete intenzione di andare lontano sbagliato con qualcosa di scritto dalla stessa fa capolino come impressionante django-pagliaio . Da quello che ho visto sul loro mailing list Daniel Lindsey et al sono super-utile, e Tastypie è stabile, completa e ben documentata
  • Eccelle nel dare un insieme ragionevole di comportamento predefinito e facendo la costruzione di un'API con quello stile incredibilmente facile.

quadro Django REST

  • consente l'HTML browse-grado API auto-descrivono. (EG, vedi il esercitazione API .) Essere in grado di navigare e interagire con le API direttamente nel browser è una grande vittoria usabilità.
  • Cerca di stare vicino a idiomi Django in tutto - costruito sulla cima di opinioni sulla base di classe di Django, ecc ... (mentre TastyPie è arrivato prima CBVS di Django esistito, quindi usi il proprio vista di classe a base di implementazione)
  • Mi piacerebbe pensare che l'architettura sottostante è abbastanza ben costruito, disaccoppiato ecc ...

In ogni caso, entrambi sono buoni. Io probabilmente caratterizzare Tastypie come dandovi un insieme ragionevole di default fuori dalla scatola, e il quadro REST ad essere molto ben disaccoppiato e flessibile. Se avete intenzione di investire un sacco di tempo in API, mi consiglierò senz'altro la navigazione attraverso la documentazione e codice di base di ogni e cercando di ottenere un tatto per il quale vi si addice di più.

Ovviamente, c'è anche il 'Perché TastyPie?' sezione in esso è README, e la 'REST quadro 3' .

post del blog di Vedi anche Daniel Greenfeld su La scelta di un quadro API per Django , da maggio 2012 (la pena notare che questo era ancora un paio di mesi prima del grande quadro REST 2.0 release).

Anche un paio di thread su Reddit con la gente che chiede la stessa domanda, da Dicembre 2013 e luglio 2013 .

Altri suggerimenti

Entrambi sono buone scelte.

Per i filtri, tastypie è più potente out-of-the-box. Se si dispone di una vista che espone un modello, si può fare filtri di disuguaglianza in stile Django:

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

o o domande:

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

questi sono possibili con djangorestframework, ma è necessario filtri di scrittura personalizzati per ogni modello.

Per traceback, sono stato più impressionato con django-resto-quadro. Tastypie cerca di e-mail su settings.ADMINS eccezioni quando DEBUG = False. Quando DEBUG = True, il messaggio di errore predefinito è serializzato JSON , che è più difficile da leggere.

Modifica risposta obsolete, tastypie non è realmente più mantenuto. framework Django Usa REST se dovete scegliere una struttura per fare REST.

Per una panoramica sulle differenze effettive tra ciascuno di essi si dovrebbe leggere la loro documentazione. Sono entrambi più o meno completo e abbastanza maturo.

Io personalmente tendono ad tastypie però. Sembra essere più facile per configurarlo. E 'fatto dalle stesse persone che hanno creato django-pagliaio che è impressionante e secondo django-pacchetti viene utilizzato più di framework Django REST.

vale la pena di notare che dal momento che questo è stato il primo ha chiesto DRF è andata sempre più rafforzandosi.

E 'il più attivo dei due su GitHub (sia in termini di impegna, stelle, forchette e collaboratori)

DRF trovi OAuth 2 di supporto e l'API sfogliabile.

Onestamente per me che ultima caratteristica è il killer. Essere in grado di rilevare tutti i miei sviluppatori front-end presso l'API sfogliabile quando non sono sicuro di come funziona qualcosa e dire 'andare a giocare; scoprire' è fantastico.

Non da ultimo perché significa che arrivare a capirlo alle loro condizioni e sapere che l'API davvero, sicuramente, assolutamente fa quello che la 'documentazione' dice che fa. Nel mondo di integrazione con le API, questo fatto da solo rende DRF quadro da battere.

Dopo aver utilizzato sia, una cosa che mi piaceva (preferito) su Django Resto Framwork è che è è molto coerente con Django.

Scrivere serializzatori modello è molto simile alla scrittura di modelli di formulari. Il costruito nel Visualizzazioni generici sono molto simili alle viste generiche di Django per HTML.

Bene, Tastypie e DRF entrambi sono scelte eccellenti. È sufficiente non puoi andare male con nessuno dei due. (Non ho lavorato Pistone eterno. E il suo tipo di non più trend ora un giorno così non sarà / non posso commentare su di esso dato per scontato.). A mio modesto parere: scelta dovrebbe essere fatta sul vostro (e del vostro team tecnico) le competenze, le conoscenze e le capacità piuttosto che su ciò TastyPie e DRF offerte, a meno che fuori rotta si sta costruendo qualcosa di veramente grande come. quora, Facebook o Google.

Personalmente, ho finito per iniziare a lavorare prima a TastyPie in un momento in cui non sapevo nemmeno Django correttamente. Tutto aveva un senso in quel momento, solo conoscendo REST e HTTP molto bene, ma con quasi nessuna o poca conoscenza Django. Perché la mia unica intenzione era quella di costruire RESTful API in poco tempo che dovevano essere consumati nei dispositivi mobili. Quindi, se siete proprio come ‘mi capita di essere in quel momento chiamato Django-new-bie’, Non pensare più andare per TastyPie.

Ma se si dispone di molti anni di esperienza di lavoro con Django, lo sa dentro e fuori e molto confortevoli utilizzando concetti avanzati (come classe basata viste, moduli, istanze Modello Validator, set di query, dei responsabili e del modello e come tutto ciò che interagiscono tra loro), ** andare per DRF. ** DFR è basi su opinioni sulla base della classe di Django. DRF è django idiomatica. E 'come si sta scrivendo i modelli di formulari, ecc validatori (Beh, django idiomatica non è dove vicino al pitone idiomatica. Se siete esperti di pitone ma non hanno alcuna esperienza con Django allora si potrebbe avere difficoltà inizialmente inserirsi in filosofia Django idiomatica e per che DRF importa pure). DRF viene fornito con un sacco di metodi magici insiti proprio come Django. Se amate il Django metodi magici e filosofia ** ** DRF è per te.

Ora, giusto per rispondere alla domanda precisa:

Tastypie:

Vantaggi:

  1. facile da ottenere cominciato con e fornire funzionalità di base OOB (out of the box)
  2. La maggior parte del tempo che non avrà a che fare con concetti avanzati come Django CBVS, le forme etc
  3. codice più leggibile e meno di magia!
  4. Se i modelli sono NON-ORM, andare per esso.

Svantaggi:

  1. Non seguire rigorosamente idiomatica Django (mente ben pitone e filosofie di Django sono molto diverse)
  2. Probabilmente po 'difficile da personalizzare API una volta che si va grandi
  3. Nessun O-Auth

DRF:

  1. Segui Django idiomatica. (Se si conosce Django dentro e fuori, e molto confortevole con CBV, forme ecc senza alcun dubbio per andare it)
  2. Fornisce fuori dalla scatola funzionalità REST utilizzando ModelViewSets. Allo stesso tempo, fornisce un maggiore controllo per la personalizzazione utilizzando CustomSerializer, APIView, GenericViews etc.
  3. Autenticazione
  4. Better. Più facile scrivere le classi di autorizzazione personalizzati. Lavoro molto bene e soprattutto molto facile da farlo funzionare con le librerie 3a parte e OAuth. DJANGO-REST-AUT la pena ricordare libreria per Auth / SocialAuthentication / registrazione. ( https://github.com/Tivix/django-rest-auth )

Svantaggi:

  1. Se non si conosce Django molto bene, non andare per questo.
  2. Magic! Qualche tempo molto difficile da capire la magia. Perché il suo stato scritto sulla parte superiore del CBV di Django, che sono a loro volta abbastanza complessa in natura. ( https://code.djangoproject.com/ticket/6735 )
  3. Ha ripida curva di apprendimento.

Personalmente cosa avrei usare nel mio prossimo progetto?

  • Ora, io non ci sarò più un fan di MAGIC e out-of-box funzionalità. Perché tutto quello che giungono in un grande costo *. * Assumendo Ho tutte le scelte e il controllo nel tempo del progetto e di bilancio, vorrei iniziare con qualcosag peso leggero come riposo ( https://github.com/toastdriven/restless ) (creato dal creatore di TastyPie e django-pagliaio ( http://haystacksearch.org/ )). E per la stessa materia probabilmente / sicuramente scegliere il framework web leggero come Flask.

  • Ma perché? - più leggibile, semplice e pitone idiomatica gestibile codice (aka divinatorio). Anche se più codice, ma alla fine forniscono una grande flessibilità e personalizzazione.

    • Esplicito è meglio che implicito.
    • Semplice è meglio che complesso.
    • Complesso è meglio di complicato.
    • Flat è meglio di nidificato.
    • Sparse è meglio di denso.
    • conta leggibilità.
    • Casi particolari non sono sufficienti speciale per rompere le regole.

Che cosa succede se avete solo altra scelta che Django e uno dei TastyPie e DRF?

  • Ora, conoscendo il Django ragionevolmente bene, io andrò con DRF **. **
  • Perché? - djagno idiomatica! (Non mi piace però). Meglio OAuth e l'integrazione 3rd party (django-resto-auth è il mio preferito).

Allora perché si è scelto il DRF / TastyPie al primo posto?

  • Per lo più ho lavorato con start-up e le piccole imprese, che sono stretti sul budget e di tempo; e la necessità di fornire qualcosa di veloce e utilizzabile. Django servire a questo scopo molto bene. (io non sono affatto dicendo che Django non è scalabile. Ci sono siti come Quora, Disquss, Youtube ecc corsa su di esso. Ma tutto si richiedono tempo e le competenze più che medi)

Mi auguro, che vi aiuterà a prendere la decisione migliore.

Altri riferimenti - 1. Lo Stato di Tastypie ( http://toastdriven.com/blog/ 2014 / maggio / 23 / stato tastypie / ) 2. Quali sono le differenze tra django-tastypie e djangorestframework? ( Quali sono le differenze tra django-tastypie e djangorestframework? )

Django-tastypie non è più gestito da suo creatore originale e ha creato un nuovo quadro peso leggero della propria.

Al momento si dovrebbe usare django-resto-quadro con Django, se si è disposti a esporre l'API.

Le grandi aziende stanno utilizzando. django-resto-quadro è un membro del nucleo di Django squadra e ottenere finanziamenti per mantenere django-resto-quadro.

django-resto-quadro hanno anche numero enorme di sempre crescente 3rd pacchetti arty troppo che vi aiuterà a costruire la vostra API più facilmente con meno fastidi.

Una parte di DRF sarà inoltre fusa in Django corretta.

DRF fornire più meglio i modelli e gli strumenti allora django-tastypie.

In breve è ben progettato, ben tenuto, finanziato, offrono enormi applicazioni di terze parti, di fiducia da grandi organizzazioni, più facile e meno boilerplate ecc sopra tastypie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top