休息顶部

通过参考,使用Spring 5和Spring Boot 2开始学习的春天课程:

>>看看这个课程

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   Spring-Swagger-Codegen-API-Client   0.0.1-Snapshot  

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   SWIGGER-CODEGEN-MAVEN-PLUGIN   2.2.3  <执行> <执行>  生成    swagger.yaml   java   resttemplate     

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

休息底部

使用Spring 5和Spring Boot 2开始,通过学习的春天课程:

>>看看这个课程
4.注释
最古老的
最新的
内联反馈
查看所有评论
对这篇文章的评论关闭!