2009-03-18 21 views
58

Ho fatto fatica a scegliere una metodologia per creare un'API RESTful con Django. Nessuno degli approcci che ho provato sembra essere il proiettile "d'argento". WAPI da http://fi.am è probabilmente il più vicino a quello che mi piacerebbe realizzare, tuttavia non sono sicuro che sia accettabile in una vera API RESTful di avere parametri che sono identificatori di risorse sia in querystring che in un formato URL "pulito". Qualche suggerimento per modificare WAPIs RestBinding.PATTERN per "ripulire" gli URL? Un'altra opzione che ho esplorato è Django-Rest-Interface. Tuttavia, questo framework sembra violare uno dei pezzi più importanti di cui ho bisogno e cioè includere l'URL completo della risorsa per i riferimenti ad altre risorse (vedere http://jacobian.org/writing/rest-worst-practices/ Uso improprio dei collegamenti). L'ultima opzione è usare django-multiresponse e fondamentalmente farlo nel modo più lungo.API Django e Restful

Per favore offrimi il tuo miglior consiglio, specialmente le persone che hanno affrontato questa decisione.

risposta

18

Credo che il django-pistone recentemente rilasciato oggi la migliore soluzione per la creazione di una vera e propria interfaccia REST in Django. django-piston

Nota: django-pistone sembra essere non più mantenuto (vedi commenti qui sotto)

+7

Il pistone Django non è stato mantenuto per anni. Mentre ha un nuovo manutentore, meglio scegliere qualcosa da http://djangopackages.com/grids/g/api/ che è più attuale. – pydanny

+10

Vorrei * fortemente * consigliare di evitare il pistone Django. L'ho usato da quando è stato abbandonato e può rendere la vita * molto * dolorosa, specialmente se devi iniziare a fare qualcosa di non standard con il serializzatore. –

+8

django-tastypie è ora la mia soluzione preferita per REST. – gsiegman

5

Si potrebbe prendere guardare django-dynamicresponse, che è un quadro leggero per l'aggiunta di REST API con JSON al tuo Django applicazioni.

Richiede modifiche minime per aggiungere il supporto dell'API alle app Django esistenti e rende semplice l'API integrata dall'inizio in nuovi progetti.

Fondamentalmente, include il supporto del middleware per l'analisi di JSON in request.POST, oltre alla serializzazione del contesto restituito a JSON o al rendering di un modello/reindirizzamento condizionale in base al tipo di richiesta.

Questo approccio si differenzia da altri framework (come django-piston) in quanto non è necessario creare gestori separati per le richieste API. È inoltre possibile riutilizzare la logica di visualizzazione esistente e continuare a utilizzare la convalida dei moduli, ecc. Come le viste normali.

9

django-tastypie è un buon modo per farlo, il loro slogan: "Creazione di API deliziosi per Django apps dal 2010" è abbastanza confortante;)

41

per Django, oltre tastypie e il pistone, django-resto-quadro è un promettendo uno degno di menzione. Ho già migrato senza problemi uno dei miei progetti.

quadro Django è un framework REST REST leggero per Django, che mira a rendere più facile costruire, RESTful Web API auto-descrive ben collegati.

esempio rapida:

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)), 
) 

prendere l'esempio dal sito ufficiale, tutti i codici di cui sopra forniscono api, l'auto ha spiegato la documentazione (come webservice base di sapone) e anche sandboxing per i test. Molto conveniente.

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

+0

Ora sto anche migrando da Piston a django-rest-framework. Sembra molto bello da usare. –

+0

Sembra che verranno migrati sempre più progetti. Grande! :) –

+0

+1 perché questo è stato portato su Python 3.3! –

0

Ti suggerisco di guardare in Django Rest Framework (DRF), giocare con questo e vedere se soddisfa le tue esigenze. La ragione per cui raccomando DRF è perché rende davvero semplici le visualizzazioni API con l'uso delle classi GenericAPIView, Mixin Classes e Mixed in Generic views. Puoi facilmente utilizzare modelli di progettazione comprovati per rendere i tuoi endpoint API e mantenere il tuo codice base pulito e conciso. Anche ASCIUGA quando scrivi il tuo codice che è sempre ottimo. Le visualizzazioni API sono letteralmente lungo 2-3 linee.

È possibile eseguire il checkout di questo tutorial http://programmathics.com/programming/python/django-rest-framework-setup/ che inizia dall'impostazione dell'ambiente per passare attraverso i diversi modi in cui rendere l'API RESTful utilizzando il framework django rest.

Disclaimer: Sono il creatore di quel sito.