首页 > 解决方案 > 在 openapi 中的两个不同路径之间共享 operationId

问题描述

首先,我想为我的英语道歉。这不是我的错,而是西班牙的教育系统:D。

我刚刚开始进行 openapi 的迁移,我需要您的帮助。我喜欢使用引用相同 operationId 的不同路径。我用一个例子来解释它:

paths:
  "/my-path/my-resource":
    get:
      tags:
        - my-api
      operationId: getMyResource
      responses:
         ...
         [omitted]
         ...
  "/another-path/another-resource":
    get:
      tags:
        - my-api
      operationId: getMyResource
      responses:
         ...
         [omitted]
         ...

可能吗?

非常感谢您的时间。

标签: openapiopenapi-generator

解决方案


您的问题已标记为openapi-generator,但似乎是关于 OpenAPI 规范的一般问题。

每个操作的操作 ID 必须是唯一的。规范的 Operation 对象部分将 operationId定义为:

用于标识操作的唯一字符串。在 API 中描述的所有操作中,id 必须是唯一的。operationId 值区分大小写。工具和库可以使用 operationId 来唯一标识一个操作,因此,建议遵循常见的编程命名约定。

粗体的“区分大小写”直接取自规范,但强调了通过工具传递这些规范的一个很好的点(这就是为什么它们必须是唯一的)。在 openapi-generator 中,我们使用 operationId 在生成的输出中定义方法或函数名称。许多语言不支持重载方法,有些甚至不支持非标准大小写(例如 Go)。我们的工具将根据输出语言转换 operationId,因此在这种情况下比规范更严格。如果您绝对需要重复的方法名称并且您的目标输出支持它,您可以创建自定义生成器并扩展处理操作的逻辑。


推荐阅读