2009-02-05 10 views
21

Je voudrais écrire une bibliothèque python pour envelopper une API de style REST offerte par un service Web particulier. Est-ce que quelqu'un sait de bonnes ressources d'apprentissage pour un tel travail, de préférence destiné aux programmeurs intermédiaires Python?Comment faire pour écrire un wrapper API Python?

Je voudrais un bon article sur le sujet, mais je me contenterais d'exemples clairs et clairs.

CLARIFICATION: Ce que je cherche à faire est d'écrire un client Python pour interagir avec un service Web - quelque chose à construire des requêtes HTTP et analyser les réponses XML/JSON, le tout enveloppé dans des objets Python.

+0

Il semble que vous vouliez taper: 'app.users.john.name()' et le faire aller à l'URL 'http://myapp.com/api/users/john/name', et comprendre la réponse? –

+0

Etes-vous intéressé par la conception d'une API Python au-dessus de l'API de style REST ou comment l'implémenter? – jfs

+1

@Richard, ce serait RPC, ce n'est pas REST. Vous ne pouvez pas coder en dur les URI de ressources ou les modèles d'URI dans un client avec une API REST. Il a besoin de découvrir les URI via l'hypertexte. Il devrait y avoir seulement 1 URI qui est codé en dur, le point d'entrée au service. Sinon vous violez une contrainte de REST et c'est simplement RPC, avec tout ce couplage. – aehlke

Répondre

3

Je ne peux pas vous indiquer d'article sur la façon de le faire, mais je pense qu'il y a quelques bibliothèques qui peuvent être de bons modèles pour concevoir les vôtres. Par exemple

PyAws. Je n'ai pas vu le code source, donc je ne peux pas vous dire à quel point c'est un exemple de code, mais les fonctionnalités et les exemples d'utilisation sur leur site web devraient être un modèle de design utile

Universal Feed Parser n'est pas un wrapper pour un webservice (c'est une bibliothèque de parseurs RSS), mais c'est un excellent exemple de conception qui privilégie la flexibilité de l'utilisation et cache les détails de l'implémentation. Je pense que vous pouvez obtenir de très bonnes idées d'utilisation pour votre emballage là-bas.

+0

feedparser semble bien, en effet. – jfs

2

Ma combinaison préférée est httplib2 (ou pycurl pour la performance) et simplejson. Comme REST est plus "une façon de concevoir" qu'un vrai "protocole" il n'y a pas vraiment de chose réutilisable (que je connaisse). Sur Ruby, vous avez quelque chose comme ActiveResource. Et pour être honnête, même cela exposerait simplement certaines tables en tant que service web, alors que la puissance de xml/json est qu'elles ressemblent plus à des "vues" qui peuvent contenir plusieurs objets optimisés pour votre application. J'espère que cela a du sens :-)

+0

Correct, il n'y a rien de réutilisable, car REST est une architecture. – aehlke

+0

Pour être encore plus précis, REST est "une façon de faire des architectures web" - aka, une méta-architecture – csparpa

1

This tutorial page peut être un bon point de départ (mais il ne contient pas tout ce dont vous avez besoin).

0

Vous devriez jeter un oeil à PyFacebook. Ceci est un wrapper python pour l'API Facebook, et c'est l'une des API les plus jolies que j'ai jamais utilisées.

0

Vous pouvez consulter le pythenic jobs, un "wrapper Python autour de l'API Authentic Jobs ..." sympa, simple mais bien formé, comme un bon exemple. C'est ce que je fais maintenant :)