¿Por qué usaría uno sobre el otro para exponer una API para su aplicación Django?
fuente
¿Por qué usaría uno sobre el otro para exponer una API para su aplicación Django?
Como autor de django-rest-framework, tengo un sesgo obvio;) pero mi opinión con suerte bastante objetiva sobre esto es algo así como:
En cualquier caso, ambos son buenos. Probablemente caracterizaría a Tastypie como un conjunto sensible de valores predeterminados, y el marco REST como muy bien desacoplado y flexible. Si planea invertir mucho tiempo en la API, definitivamente recomendaría navegar a través de los documentos y la base de código de cada uno e intentar tener una idea de lo que más le conviene.
Obviamente, también está el '¿Por qué TastyPie?' sección en su archivo README y el 'REST framework 3' .
Consulte también la publicación del blog de Daniel Greenfeld sobre Elección de un marco API para Django , de mayo de 2012 (vale la pena señalar que esto aún fue unos meses antes del gran lanzamiento del marco REST 2.0).
También un par de hilos en Reddit con personas que hacen esta misma pregunta, desde diciembre de 2013 y julio de 2013 .
Ambas son buenas elecciones.
Para los filtros, tastypie es más potente de fábrica. Si tiene una vista que expone un modelo, puede hacer filtros de desigualdad de estilo Django:
http://www.example.com/api/person?age__gt=30
o consultas OR:
http://www.example.com/api/mymodel?language__in=en&language__in=fr
Estos son posibles con djangorestframework, pero debe escribir filtros personalizados para cada modelo.
Para los rastreos, me ha impresionado más django-rest-framework. Tastypie intenta enviar correos electrónicos settings.ADMINS
sobre excepciones cuando DEBUG = False
. Cuando DEBUG = True
, el mensaje de error predeterminado es JSON serializado , que es más difícil de leer.
DjangoFilterBackend
como lo documenta el marco REST aquí: django-rest-framework.org/api-guide/filtering#api-guide
EDITAR Respuesta desactualizada, tastypie ya no se mantiene realmente. Utilice el marco REST de Django si tiene que elegir un marco para hacer REST.
Para obtener una descripción general de las diferencias reales entre ambos, debe leer su documentación. Ambos son más o menos completos y bastante maduros.
Sin embargo, yo personalmente tiendo a tastypie. Parece ser más fácil configurarlo. Está hecho de las mismas personas que crearon django-haystack, que es increíble y, según django-packages , se usa más que el marco Django REST.
Vale la pena señalar que desde que se le preguntó por primera vez, DRF ha ido fortaleciéndose.
Es el más activo de los dos en github (tanto en términos de commits, estrellas, tenedores y contribuyentes)
DRF tiene soporte para OAuth 2 y la API navegable.
Sinceramente para mí, esa última característica es el asesino. Poder señalar a todos mis desarrolladores de front-end a la API navegable cuando no están seguros de cómo funciona algo y dicen 'Go play; averiguar "es fantástico.
No menos importante porque significa que pueden entenderlo en sus propios términos y saber que la API realmente, definitivamente, hace absolutamente lo que dice la 'documentación'. En el mundo de la integración con las API, solo ese hecho hace que DRF sea el marco para vencer.
django-tastypie-swagger
cierra esta brecha?
Bueno, Tastypie y DRF son excelentes opciones. Simplemente no puedes equivocarte con ninguno de ellos. (No he trabajado en Piston nunca; y ya no es tendencia, por lo que no quiero / no puedo comentarlo. Tomado por concedido). En mi humilde opinión: se debe elegir entre las habilidades, el conocimiento y las capacidades de usted (y de su equipo de tecnología). En lugar de lo que ofrece TastyPie y DRF, a menos que, por supuesto, esté creando algo realmente grande como Quora, Facebook o Google.
Personalmente, terminé trabajando primero en TastyPie en un momento en que ni siquiera conocía django correctamente. Todo tenía sentido en ese momento, solo conocía REST y HTTP muy bien, pero con poco o nada de conocimiento sobre django. Porque mi única intención era construir API RESTful en poco tiempo que se consumirían en dispositivos móviles. Entonces, si eres como 'En ese momento me llaman django-new-bie', no pienses más en TastyPie.
Pero si tiene muchos años de experiencia trabajando con Django, lo sabe de adentro hacia afuera y se siente muy cómodo usando conceptos avanzados (como Vistas basadas en clases, Formularios, Validador de modelos, QuerySet, Manager e Instancias de modelos y cómo interactúan entre sí), * * ir por DRF. ** DFR se basa en las vistas basadas en clases de django. DRF es idiomático django. Es como si estuvieras escribiendo formularios modelo, validadores, etc. (Bueno, django idiomático no está cerca de ser una pitón idiomática. Si eres un experto en python pero no tienes experiencia con Django, es posible que tengas dificultades para encajar inicialmente en la filosofía idiomática de django y para eso también importa DRF). DRF viene con muchos métodos mágicos incorporados como django. Si amas los métodos y la filosofía mágicos de django ** DRF ** es solo para ti.
Ahora, solo para responder la pregunta exacta:
Tastypie:
Ventajas:
Desventajas
DRF:
Desventajas
Personalmente, ¿qué usaría en mi próximo proyecto?
Ahora, ya no soy fanático de MAGIC y de las funcionalidades listas para usar. Porque todos vienen a un * gran costo. * Suponiendo que tenga todas las opciones y el control sobre el tiempo y el presupuesto del proyecto, comenzaría con algo ligero como RESTLess ( https://github.com/toastdriven/restless ) (creado por el creador de TastyPie y django-haystack ( http: //haystacksearch.org/ )). Y para el mismo asunto, probablemente / definitivamente elija el framework web ligero como Flask.
¿Pero por qué? - Código de Python idiomático (también conocido como pitónico) más legible, simple y manejable. Aunque más código pero eventualmente proporciona una gran flexibilidad y personalización.
¿Qué pasa si no tienes más remedio que Django y uno de TastyPie y DRF?
Entonces, ¿por qué elegiste DRF / TastyPie en primer lugar?
Espero que te ayude a tomar una mejor decisión.
Otras referencias: 1. El estado de Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. ¿Cuáles son las diferencias entre django-tastypie y djangorestframework? ( ¿Cuáles son las diferencias entre django-tastypie y djangorestframework? )
Habiendo usado ambos, una cosa que me gustó (preferí) sobre Django Rest Framwork es que es muy consistente con Django.
Escribir serializadores de modelos es muy similar a escribir formularios de modelos. Las vistas genéricas integradas son muy similares a las vistas genéricas de Django para HTML.
Django-tastypie ya no es mantenido por su creador original y creó un nuevo marco de peso ligero propio.
En la actualidad, debe usar django-rest-framework con django si está dispuesto a exponer su API.
Las grandes corporaciones lo están usando. django-rest-framework es un miembro central del equipo de django y obtiene fondos para mantener django-rest-framework.
django-rest-framework también tiene una gran cantidad de paquetes de 3.a artillería en constante crecimiento que lo ayudarán a construir sus API más fácilmente con menos problemas.
Parte de drf también se fusionará en django propiamente dicho.
drf proporciona mejores patrones y herramientas que django-tastypie.
En resumen, está bien diseñado, bien mantenido, financiado, proporciona enormes aplicaciones de terceros, confiables por grandes organizaciones, más fácil y menos repetitivo, etc. sobre tastypie.