跳转到主要内容

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

项目描述

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记录将生成一个路由。您可以查看端点模块以查看真实世界的示例。

路由规则选项由方法_default_endpoint_options定义。以下是从端点模块的一个示例

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检索实际记录(注意:我们可以在路由信息中存储更多信息,这些信息将保留在映射中)

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

    在注册中使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

项目详情


下载文件

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

源代码分发

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

构建分发

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面