2010-11-20 19 views
9

¿Qué prefieres cuando quieres "RESTify" tu proyecto Django en Django?API RESTful para proyectos/aplicaciones Django

llegué a la conclusión de que en realidad hay tres opciones para hacerlo:

La manera correcta de hacer esto para mí sería probarlos a todos y elegir el que sea mejor para mí, así que mientras tanto me gustaría escuchar los tuyos ...

Gracias.

Respuesta

7

Estoy muy familiarizado con django-piston, por lo que naturalmente te dirigiría en esa dirección.

Un vistazo rápido a los otros dos, indica que django-rest-interface no hace más que exponer los modelos como recursos, y que django-restful-resources es el único intento de un tipo al mismo tiempo.

Piston, si mal no recuerdo, surgió del propio desarrollo del sitio bitbucket.org, y permite una gran flexibilidad: puede devolver casi cualquier objeto desde los métodos de acceso de sus recursos, no solo las instancias del modelo, y estará correctamente codificado. También tiene soporte incorporado para algunas características agradables, como la validación de formularios (si es que puede funcionar bien de todos modos) y para solicitar aceleración, entre otras cosas.

+0

Gracias por su respuesta. – Ali

3

Como el "tipo" que escribió django-restful-resources, me gustaría aclarar por qué existe. NO es un intento de exponer los modelos como recursos, sino que es un medio de permitir que una sola URL se asigne a una cantidad de diferentes métodos de manejo, uno por cada verbo HTTP. Eso es todo. Se puede usar para exponer objetos modelo, pero también se puede usar para exponer servicios como recursos o cualquier otra cosa con la que desee interactuar mediante una sola URL y verbos HTTP. Si está buscando una solución más completa, entonces, por supuesto, vaya con Piston.

+0

Hola Tom, gracias por tomarse el tiempo y responder a esta pregunta. ¿Podrías por favor aclararme sobre HTTP verb-thing? Gracias. – Ali

+2

Hi exaltado, los verbos HTTP (o métodos HTTP) son GET, POST, PUT, HEAD, DELETE, OPTIONS y TRACE. Puede encontrar descripciones realmente buenas de cómo usarlos para escribir servicios web RESTful en los siguientes enlaces: - http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html - http: // www. amazon.com/REST-Practice-Hypermedia-Systems-Architecture/dp/0596805829 - http://watchitlater.com/blog/2009/11/http-method-primer-for-restful-web-services/ (enchufe desvergonzado) – Tom

2

Según lo mencionado por eternicode, django-piston es excelente. Es maduro, bien presentado y tiene una buena comunidad detrás. Parece que en este momento falta mucho desarrollo continuo, aunque se habla de un tenedor impulsado por la comunidad, por lo que puede cambiar.

django-tastypie también vale la pena, y parece tener mucho impulso detrás de esto en este momento.

Acabo de lanzar otra opción que vale la pena considerar: django-rest-framework. Hay un par de características realmente agradables detrás de él, como el API auto-documentation.

Utiliza las vistas basadas en clases de Django 1.3, tal como lo menciona saverio, lo que significa que puede simplemente incluir algunas de las clases MixIn que proporciona, sin tener que utilizar el marco directamente. (Por ejemplo, adding HTTP content negotiation for serializing output to multiple types)

5

Con las nuevas vistas genéricas basadas en clase en django 1.3, será super fácil implementar su propia interfaz de descanso, con serializadores y deserializadores personalizados, replicando la implementación de pistón casi completa utilizando solo código de inventario. Creé un módulo de descanso basado en View (1.3) en 500 líneas de código, con una clase de recursos RESTful genérica y sub recursos, soporte clave natural para asociaciones, json y serialización XML y más.el módulo está realmente adaptado a los requisitos de mi aplicación

Lo hice para superar un par de limitaciones en el código del pistón, como tener un conjunto de consultas modificado (por ejemplo, con .values ​​(...)) antes del controlador que llama .get () en él, o no ser capaz de utilizar el método de un modelo en la serialización.

Si lo hace como lo necesita, en un par de días tendrá un conjunto funcional de clases y mixins, que comprenderá completamente y tendrá el control.

+0

Puede probar mis propias vistas tranquilas en http://github.com/rewritten. No ha sido probado exhaustivamente y podría ser bueno tener más ojos en él. – rewritten