Sure, here is the translation: JAVA:使用swagger.v3.parser.OpenAPI解析OPEN API。

huangapple go评论76阅读模式
英文:

JAVA: Parsing OPEN API with swagger.v3.parser.OpenAPI

问题

我正在尝试解析一个OPEN API URL,以下是相关的代码:

OpenAPI openAPI = new OpenAPIV3Parser().read("https://petstore3.swagger.io/api/v3/openapi.json");

这段代码出现了以下异常:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactoryBuilder

我正在使用的库是:

<dependency>
    <groupId>io.swagger.parser.v3</groupId>
    <artifactId>swagger-parser-v3</artifactId>
    <version>2.0.19</version>
</dependency>

是否有其他库可以用于解析 OPEN API 3.0?

英文:

I'm trying to parse an OPEN API URL this is the following code for it

OpenAPI openAPI = new OpenAPIV3Parser().read(&quot;https://petstore3.swagger.io/api/v3/openapi.json&quot;);

which is giving me the following exception

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonFactoryBuilder

The library which i'm using is

&lt;dependency&gt;
&lt;groupId&gt;io.swagger.parser.v3&lt;/groupId&gt;
&lt;artifactId&gt;swagger-parser-v3&lt;/artifactId&gt;
&lt;version&gt;2.0.19&lt;/version&gt;

</dependency>

Is there any other library which i can use for parsing OPEN API 3.0?

答案1

得分: 2

如果您查看 OpenAPI.read() 函数,它接受以下两种参数形式:

  1. (String location)
  2. (String location, List auths, ParseOptions resolve)

但是您正在尝试使用的是 "String URL",相反地,请尝试使用以下依赖项并提供 (String "filePath")。它将正常工作。

<dependency>
  <groupId>io.swagger.parser.v3</groupId>
  <artifactId>swagger-parser</artifactId>
  <version>2.0.26</version>
</dependency>

注意:

  • 对于 OpenAPI 3.0,使用以下代码:OpenAPI openAPI = new OpenAPIV3Parser().read(filePath)
  • 对于 Swagger 2.0,使用以下代码:Swagger swagger = new SwaggerParser().read(filePath)

以下是一个有关 read() 函数的示例代码,以帮助您更清楚地理解:

Sure, here is the translation:
JAVA:使用swagger.v3.parser.OpenAPI解析OPEN API。

您可以使用 Swagger 编辑器将 JSON 文件转换为 YAML 文件类型:

  1. 打开 Swagger 编辑器
  2. 进入 "Edit" 菜单
  3. 选择 "Convert to YAML"
  4. 下载转换后的文件,并将其移动到 filePath

Sure, here is the translation:
JAVA:使用swagger.v3.parser.OpenAPI解析OPEN API。

英文:

If you check OpenAPI.read() it accepts either

  1. (String location) or
  2. (String location, List<AuthorizationValue> auths, ParseOptions resolve)

But what you are trying with is "String URL", instead try giving (String "filePath") with below dependency. It will work like charm.

&lt;dependency&gt;
  &lt;groupId&gt;io.swagger.parser.v3&lt;/groupId&gt;
  &lt;artifactId&gt;swagger-parser&lt;/artifactId&gt;
  &lt;version&gt;2.0.26&lt;/version&gt;
&lt;/dependency&gt; 

Note:

 OpenAPI openAPI = new OpenAPIV3Parser().read(filePath) for OpenAPI3.0
 Swagger swagger = new SwaggerParser().read(filePath)   for Swagger2.0

Check out below read() snippet handy for your clarity.

Sure, here is the translation:
JAVA:使用swagger.v3.parser.OpenAPI解析OPEN API。

You can use swagger editor to switch json file type to yaml.
Swagger editor >> Edit >> Convert to YAML >> downloaded file move it to filePath

Sure, here is the translation:
JAVA:使用swagger.v3.parser.OpenAPI解析OPEN API。

答案2

得分: 1

使用以下依赖项:

<dependency>
  <groupId>io.swagger.parser.v3</groupId>
  <artifactId>swagger-parser</artifactId>
  <version>2.0.25</version>
</dependency>

这对于解析 OpenAPI 和 Swagger 规范对我来说有效。

英文:

Use the dependency:

&lt;dependency&gt;
  &lt;groupId&gt;io.swagger.parser.v3&lt;/groupId&gt;
  &lt;artifactId&gt;swagger-parser&lt;/artifactId&gt;
  &lt;version&gt;2.0.25&lt;/version&gt;
&lt;/dependency&gt;

This works for me parsing OpenAPI and Swagger Specifications

huangapple
  • 本文由 发表于 2020年7月23日 19:51:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/63053612.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定