gpt4 book ai didi

angular - Swagger/OpenAPI : How to integrate generation of typescript/angular client in build process?

转载 作者:太空狗 更新时间:2023-10-29 17:39:11 25 4
gpt4 key购买 nike

使用 swagger-codegen-maven-plugin 生成 Java/Spring Server-Stubs

在我的 Spring Boot Java 项目中,我使用 swagger-codegen-maven-plugin从我的 Swagger 2.0 api.yml 生成 Spring MVC Controller 接口(interface)(服务器 stub )。 Maven 构建过程中的集成非常简单。它的工作方式与我过去使用 WSDL 的 jaxws-maven-plugin 一样。这是带有 swagger-codegen 的 pom.xml 中的示例配置。它生成服务器端模型和 mvc 接口(interface):

<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>/api/api-v2.yml</inputSpec>
<language>spring</language>
<apiPackage>io.fischermatte.test.api</apiPackage>
<modelPackage>io.fischermatte.test.api.model</modelPackage>
<output>${project.build.directory}/generated</output>
<configOptions>
<interfaceOnly>true</interfaceOnly>
<sourceFolder>/src/main/java</sourceFolder>
<library>spring-mvc</library>
<dateLibrary>java8</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>

但是如何在客户端 Angular 应用程序的 npm 构建过程中集成相同的东西?

现在我正在尝试将客户端代码的生成集成到我的 Angular 应用程序的 npm 构建过程中。我有一个 api.yml 定义基于 Swagger 2.0 的休息端点。我希望 npm build 生成类似于此的 api 模块 typescript-angular-v4.3样本。正如我所看到的那样,npm 没有官方软件包可以像 swagger-codegen-maven-plugin 在您使用 maven 时那样做。

我是不是理解错了什么?上面提到的示例已经是结果,但是到达那里的推荐方法是什么?基于 npm 的项目中的这种集成不是可行的方法吗?是否应该手动执行并将生成的 typescript 文件检查到源目录中?

最佳答案

简要说明:
使用 maven“swagger-codegen-maven-plugin”从 Swagger yaml/json 生成服务器/客户端代码,使用“exec-maven-plugin”安装节点依赖项(npm install)和客户端编译(ng build)。

详情:
最近有类似的问题,网上没搜到,按下面的方式实现(不理想的请不要严格判断)。

构建管道:

  1. "swagger-codegen-maven-plugin"生成模型和 API 代码Spring MVC 服务器
  2. Maven 构建并安装生成的服务器代码并作为工件安装到本地存储库
  3. Spring Boot 应用程序包含生成的服务器的依赖项神器,并具有额外的配置、属性和真实的 Controller 的实现
  4. "swagger-codegen-maven-plugin"生成模型和 API 代码 Angular 客户端。输出目录在“mem-client”下项目。
  5. "exec-maven-plugin"安装客户端依赖项 (npm install)“exec-maven-plugin”构建应用程序(ng build --env=prod …)存储在 Spring Boot 应用程序资源中的构建输出
  6. 一旦 Angular 客户端编译并添加到静态服务器资源中,我们就可以使用 spring 服务器和客户端创建独立的 JAR(“spring-boot-maven-plugin”可以做到)

注意:请注意,生成的服务器和客户端代码是只读的,并且仅作为依赖项/导入包含在内。在单独的项目中真正实现 Controller 。要启动服务器/客户端编码,请执行“mvn generate-sources”。要将服务器+客户端创建为独立的 Web 应用程序,只需在父“mem”项目中执行“mvn install”。这将创建包含所有必要内容的 jar。

示例:
这是一个工作示例(创建了简单的“内存测验”游戏。注意:尚未合并到主分支,请参阅 GitHub 上的“测验”分支):https://github.com/makimenko/mem/tree/quiz

项目概览:

  1. 包含所有子模块的父 maven pom“mem”项目
  2. Maven“mem-design”项目仅包含 Swagger 2.0 yaml 文件资源。
  3. Maven“mem-server”项目包括 Spring Boot 配置,属性(property)及实际控制人
  4. Angular 5 客户端项目“mem-client”
  5. 自动生成的代码(没动过,只是在只读模式下使用进口。在源代码管理中被忽略)

希望这些信息能帮到你。

关于angular - Swagger/OpenAPI : How to integrate generation of typescript/angular client in build process?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46635633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com