我已经以 OpenAPI 3.0 格式编写了 API 定义 (https://swagger.io/docs/specification/basic-struct/)。现在,我尝试生成 Java Spring 对象,就像我之前使用 Swagger 2.0 定义及其关联的 Maven 插件一样。
到目前为止,我有一个基本的 API 定义,开头为:
openapi: 3.0.0
info:
title: Demo API
description: This is a basic REST API implementing the [Open API Specification](https://en.wikipedia.org/wiki/OpenAPI_Specification).
version: 0.0.1
在我的
pom.xml
文件中我添加了:
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-cli</artifactId>
<version>3.3.3</version>
</dependency>
但是在执行
mvn install
时,我收到此错误:
com.fasterxml.jackson.core.JsonParseException: Unrecognized
token 'openapi': was expecting ('true', 'false' or 'null')
at [Source: definition\DEFINITION.yml; line: 1, column: 9]
有谁知道问题出在哪里吗?
经过多次尝试,我发现问题出在我的 Swagger 文件上。其中
url
不是正确的 URL。它类似于 /api
(没有主机域的 URL)。
OpenAPI 生成器可以给出更好的错误消息。无论如何,放置一些有效的网址,让我可以生成代码。
请更改生成器插件并使用https://openapi-generator.tech/docs/plugins,即
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>6.0.0</version>
<executions>...</executions>
</plugin>
我最好的选择是它工作完美。
对我来说,是文件夹路径中有空格导致了此错误。
我在使用 io.swagger.codegen.v3.swagger-codegen-maven-plugin 和 Windows 时遇到了同样的问题(在 MacOS 上运行良好 - 所以它不可能是语法问题)。
升级到最新的插件版本确实修复了错误(撰写本文时为 3.0.27)。
我使用 CLI 版本的 OpenAPI Generator 收到了类似的错误。基于此问题/评论,我相信 YAML 规范中的任何验证问题都会触发生成器假设文件是 JSON。
至少我的文件发生了这种情况……遗憾的是,我必须使用不同的工具来验证 YAML,然后 OpenAPI 生成器才能工作。
我目前正在使用 openapi-generator-maven-plugin 从 OpenAPI JSON 模式生成 Java 类。
这些错误看起来像是语法问题。因此,首先确保您的架构在语法上正确并且如下所示:
{
"openapi": "3.0.0",
"info": {
"title": "Demo API",
"description": "This is a basic REST API implementing the [Open API Specification](https://en.wikipedia.org/wiki/OpenAPI_Specification).",
"version": "0.0.1"
},
# Schema definition goes here
}
我遇到了同样的问题(我需要提一下,这种情况只发生在 Windows 上。相同的代码在 Linux 下工作正常)。虽然我没有“解决方案”,但对我有用的解决方法是设置:
validateSpec = false
所以类似
generatorName = "typescript-angular"
validateSpec = false
inputSpec = "${myInputSpec}".toString()
outputDir = "${generatedCodeDir}".toString()
在 Windows 上使用 io.swagger.codegen.v3.swagger-codegen-maven-plugin v3.0.35 遇到类似的问题。 解决了将依赖项更新到 v3.0.55(撰写本文时最新)的问题