在 OpenAPI 3.0 中使用 OpenAPI Generator 时出现“无法识别的 token openapi”错误是什么意思?

问题描述 投票:0回答:8

我已经以 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]

有谁知道问题出在哪里吗?

openapi openapi-generator
8个回答
7
投票

经过多次尝试,我发现问题出在我的 Swagger 文件上。其中

url
不是正确的 URL。它类似于
/api
(没有主机域的 URL)。

OpenAPI 生成器可以给出更好的错误消息。无论如何,放置一些有效的网址,让我可以生成代码。


2
投票

请更改生成器插件并使用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>

我最好的选择是它工作完美。


2
投票

对我来说,是文件夹路径中有空格导致了此错误。


1
投票

我在使用 io.swagger.codegen.v3.swagger-codegen-maven-plugin 和 Windows 时遇到了同样的问题(在 MacOS 上运行良好 - 所以它不可能是语法问题)。

升级到最新的插件版本确实修复了错误(撰写本文时为 3.0.27)。


1
投票

我使用 CLI 版本的 OpenAPI Generator 收到了类似的错误。基于此问题/评论,我相信 YAML 规范中的任何验证问题都会触发生成器假设文件是 JSON。

至少我的文件发生了这种情况……遗憾的是,我必须使用不同的工具来验证 YAML,然后 OpenAPI 生成器才能工作。


1
投票

我目前正在使用 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
}

0
投票

我遇到了同样的问题(我需要提一下,这种情况只发生在 Windows 上。相同的代码在 Linux 下工作正常)。虽然我没有“解决方案”,但对我有用的解决方法是设置:

validateSpec = false

所以类似

generatorName = "typescript-angular"
validateSpec = false
inputSpec = "${myInputSpec}".toString()
outputDir = "${generatedCodeDir}".toString()

0
投票

在 Windows 上使用 io.swagger.codegen.v3.swagger-codegen-maven-plugin v3.0.35 遇到类似的问题。 解决了将依赖项更新到 v3.0.55(撰写本文时最新)的问题

© www.soinside.com 2019 - 2024. All rights reserved.