2009-02-05 9 views
21

Me gustaría escribir una biblioteca de Python para envolver una API de estilo REST ofrecida por un servicio web en particular. ¿Alguien sabe de algún buen recurso de aprendizaje para tal trabajo, preferiblemente dirigido a programadores intermedios de Python?HOWTO: ¿Escribir el envoltorio API de Python?

Me gustaría un buen artículo sobre el tema, pero me gustaría conformarme con ejemplos claros y claros de código.

ACLARACIÓN: Lo que quiero hacer es escribir un cliente de Python para interactuar con un servicio web, algo para construir solicitudes HTTP y analizar respuestas XML/JSON, todo envuelto en objetos de Python.

+0

Parece que quieres escribir: 'app.users.john.name()' y que vaya a la URL 'http://myapp.com/api/users/john/name', y entiendo la respuesta? –

+0

¿Está interesado en cómo diseñar una API de Python sobre la API REST-style o cómo implementarla? – jfs

+1

@Richard, eso sería RPC, eso no es REST. No puede tener los URI de recursos ni los patrones de URI codificados de forma rígida en un cliente con una API REST. Necesita descubrir URI a través del hipertexto. Solo debe haber 1 URI codificado, el punto de entrada al servicio. De lo contrario, usted viola una restricción de REST y es simplemente RPC, con todo ese acoplamiento. – aehlke

Respuesta

3

No puedo indicarle ningún artículo sobre cómo hacerlo, pero creo que hay algunas bibliotecas que pueden ser buenos modelos sobre cómo diseñar la suya propia.

PyAws por ejemplo. No vi el código fuente, así que no puedo decir qué tan bueno es como ejemplo de código, pero las características y los ejemplos de uso en su sitio web deben ser un modelo de diseño útil

Universal Feed Parser no es un envoltorio para un webservice (es una biblioteca de analizador de RSS), pero es un gran ejemplo de un diseño que prioriza la flexibilidad de uso y oculta detalles de implementación. Creo que puede obtener muy buenas ideas de uso para su envoltorio allí.

+0

feedparser se ve bien, de hecho. – jfs

2

Mi combinación favorita es httplib2 (o pycurl para el rendimiento) y simplejson. Como REST es más "una forma de diseño", entonces un "protocolo" real no es realmente algo reutilizable (que yo sepa). En Ruby tienes algo así como ActiveResource. Y, para ser honesto, incluso eso expondría algunas tablas como un servicio web, mientras que el poder de xml/json es que son más como "vistas" que pueden contener múltiples objetos optimizados para su aplicación. Espero que esto tenga sentido :-)

+0

Correcto, no hay nada reutilizable, porque REST es una arquitectura. – aehlke

+0

Para ser aún más preciso, REST es "una forma de hacer arquitecturas web", también conocido como meta-arquitectura – csparpa

1

This tutorial page podría ser un buen lugar para comenzar (pero no contiene todo lo que necesita).

0

Debería echarle un vistazo a PyFacebook. Este es un contenedor de Python para la API de Facebook, y es una de las API mejor terminadas que he usado.

0

Puede salir pythenic jobs, un "envoltorio de Python alrededor de la API Authentic Jobs ..." agradable, simple pero bien formado como un buen ejemplo. Eso es lo que estoy haciendo ahora :)