Creando un API para Odoo

Más allá de XMLRPC

Hay que dejar algo en claro: XMLRPC es un excelente protocolo de comunicación para Odoo. Es intuitivamente lógico, rápido en ejecución y está disponible en multiplicidad de lenguajes de programación. No obstante, en ocaciones requerimos una API dedicada especialmente a determinadas tareas. La creación de un API para odoo no es algo complejo, pero su estructura aparente puede desorientar a más de uno.

Odoo API

Como parte del paquete OpenSource que compone Codize, tenemos disponible un módulo instalable en -casi- cualquier versión de Odoo conocido como Odoo API. Recomiendo darse una vuelta por la Wiki de Odoo API, tenemos mucha información publicada. Dicho esto, la base de una API en Odoo se da por medio de los controllers, concretamente de un detalle al crearlo:

@http.route('/mi_ruta', type="json", auth='none', cors=*)

Esta simple línea hace la "mágia". En líneas generales, lo que se necesita para crear una ruta de acceso externo con posibilidades de recibir y enviar JSON son esas cabeceras. El type creo que está claro, vamos a enviar y recibir datos de tipo JSON (esto es importante tenerlo en cuenta al realizar las pruebas). El auth es la autorización, la cual mantendremos en none ya que nos vamos a conectar desde fuera del sistema. Acá hago un pequeño paréntesis ya que se puede pensar que el sistema es inseguro, debo aclarar que la ruta en si va a realizar la tarea que nosotros le pidamos; si dentro de la ruta ponemos algo delicado por más que le pongamos una protección masiva tendremos un problema. Más adelante explicaré como se realiza el "login". Finalmente, y no menos importante, los cors; que en este caso pongo * ya que es más sencillo para probar, pero en una API consistente debería tener el dominio (o localhost + puerto) desde el cual se realizará el request. Ya tenemos nuestra ruta de conexión, vamos a meterle algo dentro.

Log In

Creo que lo más interesante es agregarle login a aquellos request que necesiten realizar tareas delicadas (como dar de alta un contacto). Esta es la estructura general:

try:
    uid = request.session.authenticate(db, login, password)
    return uid
except Exception as e:
    return {'status': False, 'error': str(e)}

Es es un código muy simple y elemental, pero funcional. Permite devolver el UID de un usuario mediante la comprobación efectiva de si el usuario está correcto usando solo 3 datos: base de datos, usuario (email) y contraseña.

Conclusiones

¿Es posible armar una Odoo API? Si, totalmente, otro cantar es si es sencillo administrarla a nivel seguridad. Recomiendo seguir el repositorio de Odoo API de Codize, estamos todo el tiempo actualizandola para tener una plataforma lo más estable posible.

Creando un API para Odoo
Ignacio Buioli 22 marzo, 2021
Compartir Entrada
Suscribirse al Newsletter:
Categorías
Archivo