Как сгенерировать API с помощью swagger-codegen с другим именем контроллера для Java?

swagger-codegen генерирует контроллеры API на основе имени пути.

Допустим, у вас есть эти пути в вашем swagger.yaml:

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

Затем codegen сгенерирует PetAPIController, UserAPIController, StoreApiController.

Но мой API выглядит примерно так:

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

поэтому я получаю два основных контроллера: PrivateAPI и PublicAPI.

Есть ли способ избежать этого? С помощью тегов или просто со вторым словом пути.

Спасибо


person Sergio    schedule 26.02.2020    source источник


Ответы (1)


Генератор spring Swagger Codegen имеет параметр useTags (true/false), который указывает codegen использовать теги для именования классов интерфейса и контроллера. При использовании подключаемого модуля Swagger Codegen Maven вы можете указать этот параметр в разделе <configOptions>:

<configuration>
    <inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
    <language>spring</language>
    <configOptions>
       <useTags>true</useTags>
    </configOptions>
</configuration>

Когда useTags=true, операции с определенным тегом, например admin, будут помещены в AdminApi.java и AdminApiController.java.

Не забудьте правильно пометить все операции в определении API:

paths:
  /foo:
    get:
      tags:    # <-----
        - admin
      ...
person Helen    schedule 26.02.2020