如何使用 swagger-codegen 为 Java 生成具有不同控制器名称的 API?

Ser*_*gio 2 java spring swagger swagger-codegen-maven-plugin

swagger-codegen 根据路径名生成 APIController。

假设您的 swagger.yaml 中有以下路径:

/pet/findByStatus: /user/{userId} /store/inventory

然后codegen将生成PetAPIController、UserAPIController、StoreApiController。

但我的 API 是这样的:

/private/pet/findByStatus:/private/user/{userId} /public/store/inventory

所以我最终得到了两个主要控制器:PrivateAPI 和 PublicAPI

有什么办法可以避免这种情况吗?使用标签,或仅使用第二个路径词。

谢谢

Hel*_*len 7

Swagger Codegen 的spring生成器具有useTags告诉代码生成器使用标签来命名接口和控制器类的选项(true/false)。使用 Swagger Codegen Maven 插件时,您可以在以下<configOptions>部分中指定此选项:

<configuration>
    <inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
    <language>spring</language>
    <configOptions>
       <useTags>true</useTags>
    </configOptions>
</configuration>
Run Code Online (Sandbox Code Playgroud)

useTags=时true,具有特定标记的操作(例如 )admin将被放入AdminApi.javaAdminApiController.java中。

确保在 API 定义中适当标记所有操作:

paths:
  /foo:
    get:
      tags:    # <-----
        - admin
      ...
Run Code Online (Sandbox Code Playgroud)