如何从不同模块生成客户端 api
How to generate client api from different module
我正在构建 2 个微服务。第一个名为 cart,第二个名为 product。它们都通过 swagger-codegen-maven-plugin
生成了 API,但是现在我希望 cart 微服务将从驻留在 yaml 文件定义中生成客户端 api产品模块(产品从中生成服务器客户端的模块)。我怎样才能做到这一点?有没有办法从不同的模块访问 yaml 文件?我必须有什么样的依赖?
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>generate-cart-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/static/api.yaml</inputSpec>
<language>spring</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
只要在同一项目中,就可以使用相对路径。您必须添加多个 execution
标签才能同时生成产品客户端和购物车服务器。
<executions>
<execution>
<id>generate-cart-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/static/api.yaml</inputSpec>
<language>spring</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-product-client</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../product/src/main/resources/static/api.yaml</inputSpec>
<language>java</language>
<library>resttemplate</library>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
使用 <language>java</language>
生成 Java 客户端代码并选择您想要与 <library>...</library>
一起使用的库。 RestTemplate 是 Spring 的一部分,但还有很多其他的。
引用自Baeldung:
Swagger Codegen supports the following Java libraries (pairs of HTTP
clients and JSON processing libraries):
jersey1 – Jersey1 + Jackson
jersey2 – Jersey2 + Jackson
feign – OpenFeign + Jackson
okhttp-gson – OkHttp + Gson
retrofit (Obsolete) – Retrofit1/OkHttp + Gson
retrofit2 – Retrofit2/OkHttp + Gson
resttemplate – Spring RestTemplate + Jackson
rest-easy – Resteasy + Jackson
当然,您还需要将所选库添加到您的依赖项中。
我正在构建 2 个微服务。第一个名为 cart,第二个名为 product。它们都通过 swagger-codegen-maven-plugin
生成了 API,但是现在我希望 cart 微服务将从驻留在 yaml 文件定义中生成客户端 api产品模块(产品从中生成服务器客户端的模块)。我怎样才能做到这一点?有没有办法从不同的模块访问 yaml 文件?我必须有什么样的依赖?
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>generate-cart-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/static/api.yaml</inputSpec>
<language>spring</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
只要在同一项目中,就可以使用相对路径。您必须添加多个 execution
标签才能同时生成产品客户端和购物车服务器。
<executions>
<execution>
<id>generate-cart-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/static/api.yaml</inputSpec>
<language>spring</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
<execution>
<id>generate-product-client</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/../product/src/main/resources/static/api.yaml</inputSpec>
<language>java</language>
<library>resttemplate</library>
<configOptions>
<dateLibrary>joda</dateLibrary>
</configOptions>
</configuration>
</execution>
</executions>
使用 <language>java</language>
生成 Java 客户端代码并选择您想要与 <library>...</library>
一起使用的库。 RestTemplate 是 Spring 的一部分,但还有很多其他的。
引用自Baeldung:
Swagger Codegen supports the following Java libraries (pairs of HTTP
clients and JSON processing libraries):
jersey1 – Jersey1 + Jackson
jersey2 – Jersey2 + Jackson
feign – OpenFeign + Jackson
okhttp-gson – OkHttp + Gson
retrofit (Obsolete) – Retrofit1/OkHttp + Gson
retrofit2 – Retrofit2/OkHttp + Gson
resttemplate – Spring RestTemplate + Jackson
rest-easy – Resteasy + Jackson
当然,您还需要将所选库添加到您的依赖项中。