2009-03-18 23 views
58

He estado luchando con la elección de una metodología para crear una API RESTful con Django. Ninguno de los enfoques que he probado parece ser la bala "plateada". WAPI de http://fi.am es probablemente el más cercano a lo que me gustaría lograr, sin embargo, no estoy seguro si es aceptable en una API RESTful verdadera tener parámetros que sean identificadores de recursos en la cadena de consulta en lugar de en un formato de URL "limpio". ¿Alguna sugerencia para modificar WAPIs RestBinding.PATTERN para "limpiar" las URL? Otra opción que he explorado es Django-Rest-Interface. Sin embargo, este marco parece violar una de las piezas más importantes que necesito, y es incluir el URL completo de los recursos para las referencias a otros recursos (ver http://jacobian.org/writing/rest-worst-practices/ Uso incorrecto de los enlaces). La última opción es usar django-multiresponse y básicamente hacerlo a lo largo.Django y Restful APIs

Por favor, dame tu mejor consejo, especialmente las personas que han tratado con esta decisión.

Respuesta

18

Creo que el django-pistón recientemente publicado ahora es la mejor solución para la creación de una interfaz de descanso adecuado en Django. django-piston

Nota: django-pistón parece mantenerse ya no (ver comentarios abajo)

+7

django-piston no se ha mantenido bien durante años. Si bien tiene un nuevo mantenedor, es mejor elegir algo de http://djangopackages.com/grids/g/api/ que sea más actual. – pydanny

+10

Recomendaría * encarecidamente * evitar el pistón django. Lo he estado utilizando desde que fue abandonado y puede hacer que la vida sea * muy * dolorosa, especialmente si necesita comenzar a hacer algo remotamente no estándar con el serializador. –

+8

django-tastypie es ahora mi solución preferida para REST. – gsiegman

5

Usted podría tomar mira django-dynamicresponse, que es un marco ligero para añadir API REST con JSON para su Django aplicaciones.

Requiere un mínimo de cambios para agregar soporte de API a las aplicaciones existentes de Django, y hace que sea sencillo incorporar API desde el principio en nuevos proyectos.

Básicamente, incluye soporte de middleware para analizar JSON en request.POST, además de serializar el contexto devuelto a JSON o renderizar una plantilla/redirigir condicionalmente según el tipo de solicitud.

Este enfoque difiere de otros marcos (como django-piston) en que no es necesario crear controladores separados para las solicitudes API. También puede reutilizar su lógica de visualización existente y seguir utilizando la validación de formularios, etc., como las vistas normales.

9

django-tastypie es una buena manera de hacerlo, su lema: "La creación de APIs deliciosos para Django aplicaciones desde 2010" es bastante reconfortante;)

41

Para Django, además tastypie y el pistón, django-resto-marco es una una prometedora que vale la pena mencionar. Ya he migrado uno de mis proyectos sin problemas.

marco de Django es un marco RESTO RESTO ligero para Django, que tiene como objetivo hacer que sea fácil de construir, REST API Web auto-describen bien conectados.

Ejemplo rápido:

from django.conf.urls.defaults import patterns, url 
from djangorestframework.resources import ModelResource 
from djangorestframework.views import ListOrCreateModelView, InstanceModelView 
from myapp.models import MyModel 

class MyResource(ModelResource): 
    model = MyModel 

urlpatterns = patterns('', 
    url(r'^$', ListOrCreateModelView.as_view(resource=MyResource)), 
    url(r'^(?P<pk>[^/]+)/$', InstanceModelView.as_view(resource=MyResource)), 
) 

Tomemos el ejemplo de la página oficial, todos los códigos anteriores proporcionan API, sí explicó documentación (como servicio web a base de jabón) e incluso sandboxing para la prueba. Muy conveniente.

Enlaces: http://django-rest-framework.org/

+0

También estoy en el proceso de migración de Piston a django-rest-framework ahora. Se ve muy bien de usar. –

+0

Parece que se migrarán más y más proyectos. ¡Estupendo! :) –

+0

+1 porque esto ha sido portado a Python 3.3! –

0

Le sugiero que busque en Django Rest Framework (DRF), juegue con esto y vea si se ajusta a sus necesidades. La razón por la que recomiendo DRF es porque hace que las vistas API sean realmente simples con el uso de las clases GenericAPIView, Mixin Classes y Mixed in Generic views. Puede hacer uso de patrones de diseño probados para hacer sus puntos finales API y mantener su base de códigos clara y concisa. También SECO cuando escribe su código que siempre es excelente. Sus vistas de API son literalmente de 2-3 líneas de largo.

Puede consultar este tutorial http://programmathics.com/programming/python/django-rest-framework-setup/ que comienza con la configuración de su entorno para pasar por las diferentes formas de hacer su API RESTful utilizando el marco de trabajo django.

Descargo de responsabilidad: soy el creador de ese sitio web.