2012-05-14 232 views
11

Estoy compilando una aplicación Django que necesita interactuar con una API RESTful de un tercero, haciendo varios GET, PUT, etc. a ese recurso. Lo que estoy buscando es una buena forma de representar esa API dentro de Django.Consumir una API RESTful con Django

La solución más obvia, pero tal vez menos elegante, parece estar creando un modelo que tiene varios métodos que mapean las consultas del servicio web. Por otro lado, parece que usar algo así como un backend DB personalizado proporcionaría más flexibilidad y se integraría mejor en el ORM de Django.

Advertencia: Este es el primer proyecto real que he hecho con Django, por lo que es posible que me falta algo obvio aquí.

Respuesta

9

La biblioteca requests hace que sea más fácil escribir un consumidor de la API REST. También hay una biblioteca de Python llamada slumber, que está construida en la parte superior de requests, con el propósito explícito de consumir API REST. Lo bien que eso funcione para usted probablemente dependa de cuán RESTful sea realmente la API.

+0

'slumber' es muy fácil, no da mucho para la capa de abstracción. Pero en algunos casos puede ser suficiente. – Tadeck

+0

Hmm, parece que las solicitudes no admiten el uso de autenticación basada en certificados. Parece que voy a tener que escribir algo usando httplib. – devights

+0

Parece que las solicitudes ahora admiten autenticación basada en certificados. El parámetro cert puede ser una ruta de cadena para el archivo cert del cliente ssl (.pem), o un par Tuple, ('cert', 'clave'), disponible en solicitudes y sesiones. – Chris

1

Realice las llamadas REST usando el urllib incorporado (un poco torpe pero funcional) y envuelva la interfaz en una clase, con un método para cada llamada remota. Su clase puede traducir desde y hacia tipos nativos de Python. ¡Eso es lo que haría de todos modos!

Cuestiones relacionadas