标签: swagger-codegen-maven-plugin

如何在 swagger codegen 中注入自定义 spring 验证?

我们能够使用 openApi 文档并使用 spring swagger-codegen 生成 Java 输入类。此外,我们可以在为常见约束(如长度、强制等)生成输入时注入 javax.validation 注释。

我希望将其提升到下一个自定义级别,并能够使用与 Spring 的 @Constraint 注释连接的自定义验证注释来注释生成的输入类。这样我们就可以为我们的项目重用特定的验证。

我希望有一个开箱即用的解决方案。您使用自定义验证注释生成输入类的首选方法是什么?

java spring-validator swagger-2.0 swagger-codegen swagger-codegen-maven-plugin

7
推荐指数
1
解决办法
9046
查看次数

如何在 Maven 中将多个 OpenAPI 3.0 规范文件合并为一个?

在使用 Spring Boot 的 Maven 项目中,有多个 OpenAPI 3.0 规范文件。一个规范定义了所有 HTTP 错误 (errors.yml),并且 error.yml 的组件在其他规范中引用。我想生成一个输出规范,其中包含 error.yml 的所有组件。

输入规格:

  schema:
    $ref: "errors.yml#/components/schemas/Error"
Run Code Online (Sandbox Code Playgroud)

期望的输出规格:

schema:
  $ref: "#/components/schemas/Error"
  ...
Error:
  ...
Run Code Online (Sandbox Code Playgroud)

我可以使用 swagger-codegen-cli 来做到这一点:

java -Dfile.encoding=UTF-8 -jar swagger-codegen-cli-3.0.33.jar generate -l openapi-yaml -i search-api-contract/target/expert_api.yml -o . -DoutputFile=search-api-contract/target/expert_api.yml
Run Code Online (Sandbox Code Playgroud)

如何使用 Maven pom.xml 生成一份规范?

maven openapi swagger-codegen swagger-codegen-maven-plugin

7
推荐指数
1
解决办法
8504
查看次数

使 swagger codegen maven 插件从另一个 maven 依赖项访问 yaml 文件

我有一个用 Swagger 编写的 API,我想为其生成服务实现和客户端,并且它们必须位于单独的 maven 模块中。

我正在考虑将它们分成 3 个单独的 Maven 模块(或同一父 pom 的子模块)。

parent
 +- api
    +- src/main/resources/api/service.yaml
 +- client
 +- service
Run Code Online (Sandbox Code Playgroud)

然后在客户端和服务中我都会有swagger-codegen-maven-plugin. 这样两者都会同步,我只会在一个地方维护服务。其他客户端也可以依赖于api工件并从service.yamlSwagger API 定义生成它们的代码。

我的难点是如何让服务和客户端service.yaml在另一个 Maven 依赖项中引用?

这是我目前在 service 中所拥有的pom.xml,但它指的是 service 模块的本地资源,而不是apimaven 依赖项。

 <plugin>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-codegen-maven-plugin</artifactId>
        <version>${io.swagger.codegen.version}</version>
        <executions>
          <execution>
            <id>api</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>            
<!-- can this refer to another maven dependency's resources? --> 
<inputSpec>${basedir}/src/main/resources/api/service.yaml</inputSpec>
              <language>spring</language>
              <library>spring-boot</library>
              <modelPackage>com.test.model</modelPackage>
              <apiPackage>com.test.api</apiPackage>
              <generateSupportingFiles>false</generateSupportingFiles>
              <configOptions>
                <java8>true</java8>
                <dateLibrary>java8</dateLibrary>
                <interfaceOnly>true</interfaceOnly>
              </configOptions>
            </configuration> …
Run Code Online (Sandbox Code Playgroud)

java maven swagger swagger-codegen swagger-codegen-maven-plugin

5
推荐指数
1
解决办法
3217
查看次数

Swagger-Codegen 插件不生成 @Deprecated 注释

我想在端点上设置一个注释@deprecated,该注释是由 swagger-codegen 插件从 yaml 文件生成的,例如:

 paths:
  '/debug-endpoint/v1/person/{id}':
    get:
      deprecated: true
      summary: get person info
      description: Get
      parameters:
        - name: Id
          in: path
          required: true
          type: string

......
Run Code Online (Sandbox Code Playgroud)

使用 deprecated: true 时,在 swagger Ui 编辑器中显示该端点已被弃用,但在 swagger codegen 生成的代码中,该方法上未设置 @deprecated 注释。

是否可以在 swagger codegen 生成的方法上设置 @Deprecated 注释?

swagger-codegen swagger-codegen-maven-plugin

5
推荐指数
0
解决办法
757
查看次数

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

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

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

谢谢

java spring swagger swagger-codegen-maven-plugin

2
推荐指数
1
解决办法
5251
查看次数