web-dev-qa-db-fra.com

API Django et Restful

J'ai eu du mal à choisir une méthodologie pour créer une API RESTful avec Django. Aucune des approches que j'ai essayées ne semble être la "solution miracle". WAPI de http://fi.am est probablement le plus proche de ce que je voudrais accomplir, mais je ne suis pas sûr qu'il soit acceptable, dans une véritable API RESTful, que des paramètres identificateurs de ressources soient dans la chaîne de requête au lieu d'un format d'URL "propre". Des suggestions pour modifier les WAPI RestBinding.PATTERN afin de "nettoyer" les URL? Une autre option que j'ai explorée est Django-Rest-Interface. Cependant, ce cadre semble violer l’un des éléments les plus importants dont j’ai besoin, c’est-à-dire d’inclure l’URL complète de la ressource pour les références à d’autres ressources (voir http://jacobian.org/writing/rest-worst-practices/ Utilisation inappropriée de liens). La dernière option consiste à utiliser Django-multiresponse et à le faire sur le long chemin.

Donnez-moi vos meilleurs conseils, en particulier aux personnes qui ont pris cette décision. 

58
gsiegman

Je pense que Django-piston, récemment publié, est désormais la meilleure solution pour créer une interface REST appropriée dans Django. Django-piston

Note: Django-piston semble ne plus être maintenu (voir les commentaires ci-dessous))

18
gsiegman

Pour Django, Django-rest-framework est un cadre prometteur qui mérite d’être mentionné. J'ai déjà migré l'un de mes projets en douceur.

Le framework Django REST est un framework léger REST pour Django, qui vise à faciliter la construction de RESTful bien décrit et bien décrit API Web.

Exemple rapide:

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

Prenez l'exemple du site officiel, tous les codes ci-dessus fournissent une API, une documentation auto-expliquée (comme un service Web à base de savon) et même un bac à sable pour les tests. Très pratique.

Liens: http://Django-rest-framework.org/

41
Sun Liwen

Django-tastypie est un bon moyen de le faire, leur slogan: "Créer de délicieuses API pour les applications Django depuis 2010" est assez réconfortant;)

9
guerrerocarlos

Vous pourriez regarder Django-dynamicresponse , qui est un framework léger pour ajouter une API REST avec JSON à vos applications Django.

Des modifications minimes sont nécessaires pour ajouter la prise en charge des API aux applications Django existantes et simplifier l'intégration de l'API intégrée dès le début dans les nouveaux projets.

Fondamentalement, il inclut un support de middleware pour l’analyse de JSON dans request.POST, en plus de la sérialisation du contexte renvoyé en JSON ou du rendu conditionnel d’un modèle/redirection en fonction du type de requête.

Cette approche diffère des autres frameworks (tels que Django-piston) en ce qu'il n'est pas nécessaire de créer des gestionnaires distincts pour les demandes d'API. Vous pouvez également réutiliser votre logique de vue existante et continuer à utiliser la validation de formulaire, etc., comme les vues normales.

5
chrismi

Je ne sais pas si ce projet peut vous être utile, mais envoyer un lien peut difficilement faire mal. Jetez un coup d'œil à Django-apibuilder, disponible sur http://opensource.washingtontimes.com/projects/Django-apibuilder/ . Peut-être que cela peut être utile?

/ Jesper

4
Jesper Mortensen

Regardez ceci RestifyDjango .

Django XML-RPC et JSON-RPC sont un peu liés.

0
Soviut

https://github.com/RueLaLa/savory-pie

Savory Pie est un framework REST qui prend en charge Django.

0
Mike Milkin

Je vous suggérerais d’examiner le Django Rest Framework (DRF), de jouer avec cela et de voir si cela répond à vos besoins. La raison pour laquelle je recommande DRF est qu’il est très simple de simplifier les vues API avec l’utilisation des classes GenericAPIView, Mixin Classes et Mixed in Generic. Vous pouvez facilement utiliser des modèles de conception éprouvés pour rendre vos points de terminaison API ainsi que pour garder votre base de code propre et concise. Vous aussi DRY lorsque vous écrivez votre code qui est toujours génial. Vos vues API ont littéralement deux ou trois lignes.

Vous pouvez consulter ce didacticiel http://programmathics.com/programming/python/Django-rest-framework-setup/ qui commence à partir de la configuration de votre environnement et passe en revue les différentes manières de créer votre API RESTful à l'aide de Django cadre de repos.

Disclaimer: Je suis le créateur de ce site.

0
SeekingAlpha