Pourquoi utiliseriez-vous les uns sur les autres pour exposer une API pour votre Django app?
En tant qu'auteur de Django-rest-framework, j'ai un parti pris évident;) mais mon opinion, espérons-le, assez objective sur ce sujet ressemble à ceci:
En tout cas, les deux sont bons. Je dirais probablement que Tastypie vous donne un ensemble judicieux de valeurs par défaut et que le cadre REST est très bien découplé et flexible. Si vous prévoyez d'investir beaucoup de temps dans l’API, je vous recommande vivement de parcourir la documentation et la base de code de chacun et d’essayer d’avoir une idée de ce qui vous convient le mieux.
Évidemment, il y a aussi la section 'Pourquoi TastyPie?' dans son fichier README, et la 'REST framework 3' .
Voir aussi le billet de blog de Daniel Greenfeld sur Choisir un framework API pour Django , de mai 2012 (Il est à noter que c'était encore quelques mois avant la sortie de la grosse REST ).
Également quelques discussions sur Reddit avec des gens qui se posent la même question, de décembre 201 et juillet 201 .
Les deux sont de bons choix.
Pour les filtres, tastypie est plus puissant et prêt à l'emploi. Si vous avez une vue qui expose un modèle, vous pouvez faire des filtres d'inégalité de style Django:
http://www.example.com/api/person?age__gt=30
ou OR requêtes:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
cela est possible avec djangorestframework, mais vous devez écrire des filtres personnalisés pour chaque modèle.
Pour les retraits, je suis plus impressionné par Django-rest-framework. Tastypie essaie d'envoyer un courriel settings.ADMINS
sur les exceptions quand DEBUG = False
. Quand DEBUG = True
, le message d'erreur par défaut est JSON sérialisé , ce qui est plus difficile à lire.
[~ # ~] éditer [~ # ~] Réponse obsolète, tastypie n'est plus vraiment maintenu. Utilisez Django REST) framework si vous devez choisir un framework pour effectuer REST.
Pour un aperçu des différences réelles entre les deux, vous devriez lire leur documentation. Ils sont tous deux plus ou moins complets et bien matures.
Personnellement, j'ai tendance à goûter. Il semble être plus facile de le configurer. C'est fait par les mêmes personnes qui ont créé Django-haystack qui est génial et selon Django-packages il est utilisé plus que Django = REST cadre.
Il convient de noter que depuis que cette question a été posée, la DRF est devenue de plus en plus puissante.
C'est le plus actif des deux sur github (en termes de commits, d'étoiles, de fourchettes et de contributeurs)
DRF prend en charge OAuth 2 et l’API navigable).
Honnêtement pour moi, ce dernier long métrage est le tueur. Être capable de diriger tous mes développeurs front-end vers l'API navigable lorsqu'ils ne sont pas sûrs du fonctionnement de quelque chose et de dire 'Allez-y jouer; découvrir 'est fantastique.
Notamment parce que cela signifie qu'ils doivent le comprendre selon leurs propres termes et savoir que l'API fait vraiment, absolument, exactement ce que dit la "documentation". Dans le monde de l'intégration aux API, ce seul fait fait de DRF le cadre à battre.
Django-tastypie n'est plus maintenu par son créateur original et il a créé son propre cadre léger.
Actuellement, vous devez utiliser Django-rest-framework avec Django si vous souhaitez exposer votre API.
Les grandes entreprises l'utilisent. Django-rest-framework est un membre essentiel de l'équipe Django) et il reçoit des fonds pour maintenir Django-rest-framework.
Django-rest-framework propose également un nombre impressionnant de 3èmes packages arty en croissance constante qui vous aideront à créer plus facilement vos API sans tracas.
Une partie de drf sera également fusionnée dans Django.
drf fournit davantage de modèles et d’outils plus performants que Django-tastypie.
En bref, il est bien conçu, bien entretenu, financé, fournit d’énormes applications tierces, approuvées par les grandes organisations, plus simples et moins fiables, etc.
Eh bien, Tastypie et DRF sont d'excellents choix. Vous ne pouvez simplement vous tromper avec l’un d’eux. (Je n’ai jamais travaillé sur Piston; et son genre de tendance n’est plus à la mode depuis quelques jours, donc je ne peux/ne peux pas le commenter. Pris pour Accordé.) À mon humble avis: Vous devez choisir vos compétences, connaissances et capacités (ainsi que celles de votre équipe technique). Plutôt que d’offrir ce que TastyPie et DRF proposent, sauf si vous êtes hors de propos. construire quelque chose de vraiment gros comme Quora, Facebook ou Google.
Personnellement, j’ai commencé par travailler d’abord sur TastyPie à un moment où je ne connaissais même pas Django correctement. Tout cela avait un sens à cette époque, ne connaissant que très bien REST et HTTP, mais avec peu ou pas de connaissances sur Django. Parce que mon seul objectif était de créer en un rien de temps des API RESTful qui devaient être consommées sur des appareils mobiles. Donc, si vous êtes comme "j’appelle Django-new-bie à ce moment-là", , pensez plutôt à TastyPie.
Mais si vous avez plusieurs années d'expérience de travail avec Django, vous le connaissez parfaitement et êtes très à l'aise avec l'utilisation de concepts avancés (tels que les vues basées sur les classes, les formulaires, le validateur de modèle, QuerySet, le gestionnaire et le modèle). Les instances et la manière dont elles interagissent les unes avec les autres), ** optent pour le format DRF. ** DFR est basé sur les vues de classe de Django. DRF est idiomatique Django. C'est comme si vous écriviez des modèles, des validateurs, etc. (Eh bien, idiomatique Django n'est pas proche du python idiomatique. Si vous êtes python expert mais n'avez aucune expérience de Django alors vous aurez peut-être des difficultés à vous adapter initialement à la philosophie idiomatique Django et à DRF également). DRF est livré avec beaucoup de méthodes magiques intégrées, comme Django. Si vous aimez le Django méthodes et philosophie magiques ** DRF ** est fait pour vous.
Maintenant, juste pour répondre à la question exacte:
Tastypie:
Avantages:
Inconvénients:
DRF:
Inconvénients:
Personnellement, qu'est-ce que j'utiliserais dans mon prochain projet?
Maintenant, je ne suis plus un fan des fonctionnalités MAGIC et Out-of-box. Parce que tout cela a un coût très élevé. * En supposant que je dispose de tous les choix et que je maîtrise le temps et le budget du projet, je commencerais par quelque chose de léger, comme RESTLess ( https://github.com/toastdriven/restless ) (créé par le créateur de TastyPie et Django-haystack ( http://haystacksearch.org/ )). Et pour la même chose, choisissez probablement/certainement le framework web léger comme Flask.
Mais pourquoi? - Code python (alias Pythonic) plus lisible, simple et gérable. Bien que plus de code, mais fournissent finalement une grande flexibilité et personnalisation.
Que faire si vous n'avez d'autre choix que Django et l'un de TastyPie et DRF?
Alors pourquoi avez-vous choisi DRF/TastyPie en premier lieu?
J'espère que cela vous aidera à prendre une meilleure décision.
Autres références - 1. L'état de Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Qu'est-ce sont les différences entre Django-tastypie et djangorestframework? ( Quelles sont les différences entre Django-tastypie et djangorestframework? )
Ayant utilisé les deux, une chose que j’ai aimé (préféré) à propos de Django Rest Framwork est c’est très cohérent avec Django.
L'écriture de sérialiseurs de modèles est très similaire à l'écriture de formes de modèles. Les vues génériques intégrées sont très similaires aux vues génériques de Django pour HTML.