OdooWiki OCA HUB

Endpoint route handler

endpoint_route_handler folder_open OCA/web-api open_in_new
Sin categoría Licencia: LGPL-3

Módulo técnico que proporciona un manejador base para añadir y eliminar rutas de controlador sobre la marcha.

Puede usarse como mixin o como herramienta.

Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.

auto_awesome Qué hace este módulo

Generado por IA a partir del código · Odoo 19.0

Módulo técnico que permite a los desarrolladores registrar endpoints web personalizados (URLs) directamente desde registros de Odoo, sin editar código. Proporciona un modelo base y una herramienta para añadir o eliminar rutas sobre la marcha.

Este es un módulo técnico dirigido a desarrolladores que construyen otros módulos. No añade menús ni pantallas para usuarios finales; en su lugar, proporciona un modelo base reutilizable endpoint.route.handler y una herramienta auxiliar endpoint.route.handler.tool que otros módulos pueden heredar para exponer endpoints web personalizados.

  • Cada registro de endpoint almacena un nombre, una ruta (URL path), el método HTTP (GET, POST, PUT, DELETE), el tipo de autenticación (Public, User, API Key), el tipo de contenido de la petición, los orígenes CORS, y los flags CSRF y de solo lectura.
  • Las rutas se normalizan automáticamente: se añade una barra inicial y se puede aplicar un prefijo configurable.
  • Reglas de negocio: las rutas deben ser únicas en todos los modelos que usan este handler, y algunas rutas como / y /web están en la lista negra. Para las peticiones POST y PUT el tipo de contenido es obligatorio.
  • Cuando se crea, modifica o elimina un registro, el módulo sincroniza el registro de enrutamiento para que el nuevo endpoint esté disponible (o se elimine) sin reiniciar Odoo. Un flag registry_sync indica cambios pendientes.
  • Se engancha en ir.http para inyectar las reglas personalizadas en el mapa de enrutamiento y añade una autenticación especial user_endpoint que devuelve un error Unauthorized adecuado en lugar de redirigir a la página de inicio de sesión.
  • Los derechos de acceso permiten a los administradores del sistema gestionar los registros de endpoints; los demás usuarios tienen acceso de solo lectura.

Depende de

base

Lo necesitan otros módulos

Modelos y campos (4)
  • ir.http · amplía un modelo existente
  • endpoint.route.handler · modelo nuevocors, csrf, name, route, readonly, auth_type, route_type, route_group, endpoint_hash, request_method, request_content_type
  • endpoint.route.sync.mixin · modelo nuevoactive, registry_sync
  • endpoint.route.handler.tool · modelo nuevo

Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. Ver el código en GitHub

Disponibilidad por versión

Revisado: 2026-11-03
Confirmado (verificado en repositorio y rama) Estimado (sin verificar) Sin información

Estado de confirmación: 5 confirmadas, 4 sin información de 9 versiones.

terminal Instalación y uso

Documentación de OCA · Odoo 19.0

Como mixin

Utiliza la herencia estándar de Odoo:

class MyModel(models.Model): _name = "my.model" _inherit = "endpoint.route.handler"

Una vez hecho esto, cada registro de my.model generará una ruta. Puedes echar un vistazo al módulo endpoint para ver un ejemplo real.

Las opciones de las reglas de enrutamiento se definen mediante el método _default_endpoint_options. Aquí tienes un ejemplo del módulo endpoint:

def _default_endpoint_options_handler(self): return { "klass_dotted_path": "odoo.addons.endpoint.controllers.main.EndpointController", "method_name": "auto_endpoint", "default_pargs": (self.route,), }

Como puedes ver, tienes que pasar las referencias a la clase del controlador y al método que se utilizará cuando se llame al endpoint. Y puedes preparar algunos argumentos predeterminados para pasar. En este caso, la ruta del registro actual.

Como herramienta

Inicializa manejadores de rutas no almacenados y genera rutas a partir de ellos. Por ejemplo:

route_handler = self.env["endpoint.route.handler.tool"] endpoint_handler = MyController()._my_handler vals = { "name": "My custom route", "route": "/my/custom/route", "request_method": "GET", "auth_type": "public", } new_route = route_handler.new(vals) new_route._register_controller()

Valores disponibles de auth_type:

  • public: no se requiere autenticación
  • user_endpoint: autenticación de usuario basada en sesión (predeterminada)
  • bearer: autenticación mediante clave de API a través de la cabecera Authorization: Bearer (utiliza el res.users.apikeys integrado de Odoo)

Puedes sobrescribir las opciones y definir, por ejemplo, un método de controlador diferente:

options = { "handler": { "klass_dotted_path": "odoo.addons.my_module.controllers.SpecialController", "method_name": "my_special_handler", } } new_route._register_controller(options=options)

Por supuesto, lo que ocurre cuando se llama al endpoint depende de la lógica definida en el método del controlador.

En ambos casos (mixin y herramienta), cuando se genera una nueva ruta o se actualiza una existente, se actualizará el ir.http.routing_map (que contiene todos los controladores de Odoo).

Puedes ver un ejemplo real en el modelo shopfloor.app.

Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Instalación, Configuración.

info

Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.