2009-03-18 15 views
58

Mam problem z wyborem metodologii tworzenia RESTful API z Django. Żadne z podejść, które próbowałem, nie wydaje się być "srebrnym" pociskiem. WAPI od http://fi.am jest prawdopodobnie najbliższy temu, co chciałbym osiągnąć, jednak nie jestem pewien, czy jest dopuszczalne w prawdziwym API RESTful, aby parametry, które są identyfikatorami zasobów, były w tekście zapytania zamiast w "czystym" formacie URL. Wszelkie sugestie dotyczące modyfikacji WAPI RestBinding.PATTERN, aby "wyczyścić" adresy URL? Inną opcją, którą zbadałem jest Django-Rest-Interface. Ramy te wydają się jednak naruszać jeden z najważniejszych elementów, których potrzebuję, a mianowicie pełny adres URL zasobów dla odniesień do innych zasobów (patrz http://jacobian.org/writing/rest-worst-practices/ Niewłaściwe użycie łączy). Ostatnią opcją jest użycie django-multiresponse i zasadniczo zrobić to na dłuższą metę.Django i Restful APIs

Proszę o udzielenie mi najlepszej porady, w szczególności osób, które podjęły tę decyzję.

Odpowiedz

18

wierzę niedawno wydany django-tłokowy jest obecnie najlepszym rozwiązaniem do tworzenia odpowiedniego interfejsu REST w Django. django-piston

Uwaga: django-tłok wydaje się już być utrzymywane (patrz komentarz poniżej)

+7

Django-tłok nie był dobrze utrzymany od lat. Chociaż ma nowego opiekuna, lepiej wybrać coś z http://djangopackages.com/grids/g/api/, które jest bardziej aktualne. – pydanny

+10

Chciałbym * zdecydowanie * doradzić unikanie django-tłoków. Używam go od czasu, gdy został porzucony i może sprawić, że życie * będzie bardzo bolesne, szczególnie jeśli musisz zacząć robić coś, co nie jest normalne w przypadku serializera. –

+8

django-tastypie jest teraz moim preferowanym rozwiązaniem dla REST. – gsiegman

5

Można wziąć spojrzeć na django-dynamicresponse, które jest lekkie ramy dodanie API REST z JSON do Django Aplikacje.

Wymaga minimalnych zmian w celu dodania obsługi interfejsu API do istniejących aplikacji Django i od samego początku ułatwia tworzenie interfejsów API w nowych projektach.

Zasadniczo zawiera obsługę oprogramowania pośredniego do analizowania JSON w request.POST, oprócz serializacji zwróconego kontekstu do JSON lub renderowania szablonu/przekierowania warunkowo w zależności od typu żądania.

Podejście to różni się od innych frameworków (takich jak django-tłok), ponieważ nie trzeba tworzyć oddzielnych procedur obsługi żądań interfejsu API. Możesz także ponownie użyć istniejącej logiki widoku i dalej używać sprawdzania poprawności formularza itp., Podobnie jak zwykłe widoki.

41

Dla Django, oprócz tastypie i tłokiem, django-rest-framework jest obiecujący, o którym warto wspomnieć. Migrowałem już jeden z moich projektów bezproblemowo.

Django REST ramy to lekkie ramy REST dla Django, że ma na celu ułatwić budowanie dobrze podłączone, Self-opisujące relaksującego Web API.

Krótki przykład:

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

Weźmy przykład z oficjalnej strony, wszystkie powyższe kody zapewniają api, self wyjaśnił dokumentację (jak usługa oparciu mydła), a nawet piaskownice do testów. Bardzo wygodne.

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

+0

Jestem również w trakcie migracji z Tłok do Django-Rest-Framework teraz. Wygląda bardzo ładnie. –

+0

Wygląda na to, że migruje więcej projektów. Wspaniały! :) –

+0

+1, ponieważ został przeniesiony do Python 3.3! –

0

Sugerowałbym, żebyś zajrzał do Django Rest Framework (DRF), obejrzyj to i sprawdź, czy odpowiada Twoim wymaganiom. Powodem, dla którego polecam DRF, jest to, że sprawia, że ​​widok API jest naprawdę prosty przy użyciu klas GenericAPIView, klas Mixin i widoków Mixed in Generic. Możesz łatwo korzystać z wypróbowanych i sprawdzonych wzorców projektowych do tworzenia punktów końcowych API, a także utrzymywać bazę kodu w sposób czysty i zwięzły. Ty też suszysz, pisząc swój kod, który jest zawsze świetny. Twoje widoki API mają dosłownie 2-3 linie.

Możesz wypróbować ten samouczek: http://programmathics.com/programming/python/django-rest-framework-setup/, który zaczyna się od skonfigurowania środowiska do przechodzenia przez różne sposoby tworzenia RESTful API przy użyciu frameworku django rest.

Nota prawna: Jestem twórcą tej witryny.