用摇摇晃晃地生成弹簧启动休息客户端
最后修改:2020年3月23日
1.介绍
在本文中,我们将使用播放法阁和OpenAPI发电机项目生成REST客户端OpenAPI /大摇大摆规范文件。
此外,我们将创建一个Spring Boot项目,我们将使用生成的类。
我们将使用昂首阔步PetstoreAPI示例的一切。
2.生成带有Swagger Codegen的REST客户端
Swagger提供了一个Utility jar,允许我们为各种编程语言和多个框架生成REST客户端。
2.1。下载jar文件
这code-gen_cli.jar.可以从中下载在这里。
对于最新版本,请检查swagger-codegen-cli存储库。
2.2。生成客户
让我们通过执行命令来生成客户Java -Jar Swagger-Code-Gen-Cli.jar生成:
Java -jar swagger-codegen-cli.jar生成\ -i http://petstore.swagger.io/v2/swagger.json \——api-package com.baeldung.金宝搏188体育petstore.client.api \——model-package com.baeldung.petstore.client.model \——invoker-package com.baeldung.petstore.client.invoker \——group-id com。金宝搏188体育baeldung \——工件id spring-swagger-codegen-api-client \——工件版本0.0.1-SNAPSHOT \ -l java \——库resttemplate \ -o spring-swagger-codegen-api-client
提供的参数包括:
- 源浏览文件URL或路径 - 提供使用-一世论点
- 生成类的包的名称 - 提供使用api包那-Model包装那-invoker-package
- 生成的Maven项目属性组id那- artifact-id.那-artifact-version
- 生成的客户端的编程语言 - 提供使用-L.
- 控件提供的实现框架-图书馆
- 输出目录 - 提供使用-O
要列出所有与java相关的选项,输入以下命令:
Java -jar swagger-codegen-cli.jar
Swagger Codegen支持以下Java库(HTTP客户端对和JSON处理库):
- 杰西1- 杰西1 +杰克逊
- 泽西二-泽西2 +杰克逊
- 假装- OpenFeign + Jackson
- okhttp-gson.- OkHttp + Gson
- 改造(过时)- Retrofit1/OkHttp + Gson
- Retrofit2.- Retrofit2 / Okhttp + Gson
- rest-template- Spring RestTemplate + Jackson
- 高枕无忧- Resteasy + Jackson
在这篇文章中,我们选择了rest-template因为它是春天生态系统的一部分。
3.使用OpenAPI生成器生成REST客户端
OpenAPI Generator是Swagger Codegen的一个分支,能够从任何OpenAPI Specification 2.0/3生成50多个客户端。x文件。
威猛Codegen由SmartBear维护,OpenAPI生成器由一个社区维护,其中包含超过40名顶级贡献者和Swigger Codegen的模板创作者作为创始团队成员。
3.1。安装
也许是最简单,最便携的安装方法使用npm包它通过在Java代码支持的命令行选项之上提供一个CLI包装器来工作。安装很简单:
NPM Install @ OpenApitools / OpenApi-Generator-Cli -g
对于那些想要JAR文件的人,它可以在Maven中央。让我们现在就下载吧:
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.3/openapi-generator-cli-4.2.3.jar \ -o openapi-generator-cli.jar
3.2。生成客户
首先,OpenAPI Generator的选项与Swagger Codegen的选项几乎相同。最显着的区别是替换-L.语言标志与-G生成器标志,它将生成客户端的语言作为参数。
接下来,让我们使用罐命令:
Java -jar openapi-generator-cli.jar generate \ -i http://petstore.swagger.io/v2/swagger.json \——api-package com.b金宝搏188体育aeldung.petstore.client.api \——model-package com.baeldung.petstore.client.model \——invoker-package com.baeldung.petstore.client.invoker \——group-id com。金宝搏188体育baeldung \——artifact-id spring-openapi-generator-api-client \——artifact-version 0.0.1-SNAPSHOT \ -g java \ -p java8=true \——library resttemplate \ -o spring-openapi-generator-api-client
要列出所有与Java相关的选项,请键入命令:
java -jar openapi-generator-cli.jar config-help -g java
OpenAPI Generator支持所有相同的Java库,作为Swagger Codegen加上几个额外的Java库。OpenAPI生成器支持以下Java库(对HTTP客户端对和JSON处理库):
- 杰西1- 杰西1 +杰克逊
- 泽西二-泽西2 +杰克逊
- 假装- OpenFeign + Jackson
- okhttp-gson.- OkHttp + Gson
- 改造(过时)- Retrofit1/OkHttp + Gson
- Retrofit2.- Retrofit2 / Okhttp + Gson
- 创建resttemplate- Spring RestTemplate + Jackson
- WebClient.- Spring 5 WebClient + Jackson(仅限OpenApi Generator)
- 高枕无忧- Resteasy + Jackson
- vertx- Vertx +杰克逊
- Google-API-Client- Google API客户端+杰克逊
- 请放心-放心+ Jackson/Gson(仅限Java 8)
- 本地的- Java原生HttpClient + Jackson(仅限Java 11;OpenAPI发生器)
- 微鼠- Microprofile客户端+ Jackson(仅OpenAPI Generator)
4.生成Spring Boot项目
现在让我们创建一个新的Spring Boot项目。
4.1。maven依赖
我们首先将生成的API客户端库的依赖关系添加到我们的项目中pom.xml.文件:
<依赖> com.baeldun金宝搏188体育g groupID> Spring-Swagger-Codegen-API-Client ArtifactiD> 0.0.1-Snapshot Version> 依赖项>
4.2。将API类视为春季豆类
要访问生成的类,我们需要将它们配置为beans:
@Configuration公共类PetStoreIntegrationConfig {@Bean公共PetApi PetApi(){返回新的PetApi(apiClient());} @Bean公共ApiClient ApiClient(){返回新的ApiClient();}}
4.3。API客户端配置
这apiclient.类用于配置身份验证,API,公共标题的基本路径,以及它负责执行所有API请求。
例如,如果您正在使用OAuth:
@bean public apiclient apiclient(){apiclient apiclient = new apiclient();oauth petstoreauth =(oauth)apiclient.getauthentication(“petstore_auth”);petstoreauth.setaccesstoken(“特殊关键”);返回apiclient;}
4.4。弹簧主要应用
我们需要导入新创建的配置:
@springbootapplication @import(petstoreintegrationconfig.class)公共类诱惑ropplication {public静态void main(string [] args)抛出异常{springapplication.run(petstoreApplication.class,args);}}
4.5。API的使用
由于我们将API类配置为Bean,我们可以在我们的Spring托管类中自由注入:
@Autowired私有PetApi PetApi;public List findAvailablePets() {return petapi . findpetbystatus (Arrays.asList("available"));}
5.替代方案
除了执行Swagge Codegen或OpenAPI生成器CLI之外,还有其他方式生成REST客户端。
5.1。Maven插件
一种Swagge-Codegen Maven插件可以轻松配置在您的pom.xml.允许使用与Swagger Codegen CLI相同的选项生成客户端。
这是我们可以在我们的项目中包含的基本代码片段pom.xml.自动生成客户端:
io.swagger groupID> SWIGGER-CODEGEN-MAVEN-PLUGIN ARTIFACTID> 2.2.3 version> <执行> <执行> 生成 goal> 目标> swagger.yaml inputspec> java language> resttemplate library> configuration> execution> Executions> 插件>
5.2。Swagge Codegen在线生成器API
一个已经发布的API,它通过向URL发送POST请求来帮助我们生成客户端http://generator.swagger.io/api/gen/clients/java.将规范URL与请求正文中的其他选项一起传递。
让我们使用一个简单的curl命令进行一个例子:
curl -X POST -H "content-type:application/json" \ -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger. json"json "} \ http://generator.swagger.io/api/gen/clients/java
响应将是JSON格式,其中包含一个可下载链接,其中包含zip格式的生成的客户端代码。您可以通过Swaager Codegen CLI中使用的相同选项来自定义输出客户端。
https://generator.swagger.io.包含API的Swagger文档,我们可以查看它的文档并尝试它。
5.3。OpenAPI生成器在线生成器API
和Swagger Godegen一样,OpenAPI Generator也有一个在线生成器。让我们使用一个简单的curl命令来执行一个示例:
curl -x post-h“content-type:application / json”\ -d'{“OpenApiurl”:“http://petstore.swagge.io/v2/swagge.json”}“\ http:// api。OpenApiegenerator.tech/api/gen/clients/java.
以JSON格式,响应将包含zip格式的生成的客户端代码的可下载链接。您可以通过Swagger Codegen CLI中使用的相同选项来自定义输出客户端。
https://github.com/openapitools/openapi-generator/blob/master/docs/online.md.包含API的文档。
6.结论
Swagger Codegen和OpenAPI Generator使您可以快速为您的API生成REST客户端,并使用您选择的库和您选择的库。我们可以使用CLI工具,Maven插件或在线API生成客户端库。
这是一个基于Maven的项目,包含三个Maven模块:生成的Swagger API客户端、生成的OpenAPI客户端和Spring Boot应用程序。
一如既往,您可以找到可用的代码在GitHub。