跳转到主要内容

提供混合和工具,以动态生成自定义端点。

项目描述

Beta License: LGPL-3 OCA/web-api Translate me on Weblate Try me on Runboat

技术模块,提供动态添加和删除控制器路由的基础处理器。

可作为混合或工具使用。

目录

用法

作为混合

使用标准的Odoo继承

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

一旦您有了这个,每个 my.model 记录都将生成一个路由。您可以通过查看 endpoint 模块来查看一个真实世界的示例。

路由规则的选项由 _default_endpoint_options 方法定义。这里是一个来自 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,),
    }

如您所见,您必须传递控制器类和端点调用时要使用的方法的引用。您还可以准备一些默认参数来传递。在这种情况下,当前记录的路由。

作为工具

初始化非存储路由处理器并从中生成路由。例如

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()

您可以覆盖选项并定义 - 例如 - 不同的控制器方法

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

当然,端点被调用时会发生什么取决于控制器方法上定义的逻辑。

在两种情况(混合和工具)中,当生成新的路由或更新现有路由时,都会更新 ir.http.routing_map(它包含所有Odoo控制器)。

您可以在 shopfloor.app 模型上看到一个真实世界的示例。

已知问题/路线图

  • 添加API文档助手

  • 允许在同一个端点上使用多个HTTP方法

  • 路由和方法的多值

    目前保持UI中的值不变,以后我们可以设想一个多值选择或添加带有适当验证和清理的文本字段

    在endpoint_route表中删除路由字段

    支持逗号分隔的路由列表,可能支持逗号分隔的方法列表,仅使用routing.routes生成规则,并将值排序并冻结以更新endpoint hash

    在同步时捕获重复路由异常,以检测重复的路由,并使用endpoint_hash检索实际记录(注意:我们可以在路由信息中存储更多信息,这些信息将保留在映射中)

    为了定制规则行为,端点钩子是用来覆盖注册表查找

    使EndpointRule类在注册表上可覆盖

注意:在v16中,我们不再关心Odoo控制器,因此控制器查找可以简化为包含路由信息的基本py obj。

错误跟踪器

错误在GitHub Issues上跟踪。如果遇到问题,请检查是否已报告您的问题。如果您是第一个发现的,请帮助我们通过提供详细和受欢迎的反馈

请勿直接联系贡献者以获取支持或技术问题的帮助。

鸣谢

作者

  • Camptocamp

贡献者

维护者

此模块由OCA维护。

Odoo Community Association

OCA,即Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并促进其广泛使用。

当前维护者

simahawk

此模块是GitHub上OCA/web-api项目的一部分。

欢迎您贡献力量。要了解更多信息,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。有关教程,请参阅生成分发存档

构建分发

由以下机构支持