问题标签 [openapi-generator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1910 浏览

java - openapi-code-generator 3.3.4 不读取标签和 API 类名不是预期的

我有以下openapi文件。我预计生成的 API 类名将是SampleApi因为操作 "/hello" 被标记为 "sample" tags。但它正在使用名称生成 API 类名称operation,它是HelloApi. 我在这里想念什么?我正在使用openapi-generator-maven-plugin版本3.3.1

openapi: "3.0.0" info: version: 1.0.0 title: Sample Service tags: - name: sample paths: /hello: get: summary: Says hello world operationId: greet tags: - sample responses: 200: description: ok content: plain/text:
schema: type: string example: Hello World

0 投票
2 回答
4267 浏览

reactjs - 尝试导入错误:“模型”未从“../模块”导出

即使 VS Code 正确解析了模块,Typescript react app 也不一致地无法导入接口定义。

我使用基于 swagger 规范的 openapi 代码生成器构建了一个带有 create-react-app 的 typescript react 应用程序和一个 REST 客户端。

然后,我在我的应用程序中使用生成的接口定义作为类型定义。

但是,由于某种原因,我始终无法不时导入这些定义。

我已经尝试删除 node_modules 和npm install.

显示问题的文件(ModelProxy.ts):

生成的模块 index.ts 文件:

模型模块 index.ts 文件:

模型.ts 文件:

简化的文件结构:

我从 React 组件导入 ModelProxy 以进行 api 调用并隔离自动生成的代码。这种模式已经工作了一段时间了。

令我惊讶的是,Visual Studio Code 很好地解析了类型定义。但是,该应用程序不会构建。

构建失败并出现错误:

出于保密原因,我更改了文件名。

0 投票
1 回答
4533 浏览

openapi - 如何使用引用我自己的 *_controller.py 实现的 OpenAPI Generator 生成 Python Flask 服务器?

我想生成一个 Python Flask 服务器,提供特定的 OpenAPI 规范作为输入 - 比如说 foo.yaml - 运行以下命令:

但是,这会生成一个服务器存根,其中包含\python-flask_api_server\openapi_server\controllers下名为foo_controller.py的文件,并且此文件中定义的每个方法都返回相同的模板字符串:

“做点魔术!”

foo_controller.py

我试图用 OpenAPI Generator 做的是生成一个服务器存根,它的foo_controller.py引用我自己的这个文件的实现,例如:

foo_controller.py(生成的文件)

foo_controller_impl.py(我对 foo_controller.py 的实现)

我运行了以下命令来生成一个新的模板集:

但是在阅读了生成的README.md并检查了MycodegenGenerator.java之后,我仍然不太清楚如何实现这一点。

任何帮助将不胜感激。

0 投票
1 回答
328 浏览

swagger - 在没有 swagger.json 的情况下使用 OpenAPI/Swagger CodeGen

我有一个没有考虑Swagger构建的 REST API 。它没有 swagger.json 文件。我不控制这个 API。API 基于 URL,响应 GET、POST 和 PUT 请求,并返回 JSON 或 XML。

是否有前进的道路可以让我swagger-codegen通过这个 API 使用该工具?也就是说,我知道我通常可以为 API 生成客户端代码

我想知道是否有办法

  1. 为 API 编写我自己的 swagger.json 文件
  2. 做——什么?-- 将请求和响应转换为这个遗留 REST API 所期望的格式

swagger/OpenAPI 工具是否有任何允许上述内容的功能,或者是否超出了项目的范围?

0 投票
1 回答
618 浏览

java - openapi 生成 - 初始化对象

我正在使用 openapi-generator-maven-plugin 从我的 yml 文件生成代码。

当从 yml 生成对象时,生成的代码总是生成对象并用 null 初始化它们。

例如:

有没有一种方法可以用对象本身初始化对象,例如:

0 投票
1 回答
374 浏览

java - OpenAPI - 为不断变化的 api 生成服务器代码?

我正在维护一个 Java 应用程序,我们在其中不断添加新功能(api 的更改)。我想转向使用 OpenAPI 作为记录 api 的一种方式。我看到了两种思想流派:

  1. 编写代码,使用一些注释来生成 OpenAPI 规范。
  2. 编写 OpenAPI,用它来生成一些服务器代码。

虽然两者看起来都很好而且很花哨,但服务器代码只是被删除了,然后需要大量手动插入服务。虽然这似乎是一次性成本,但下次我更新界面时,在我看来只有两个选择是

  1. 再次生成它们,重新进行所有手动接线。
  2. 手动编辑先前生成的类以匹配新的规范文件(可能会引入错误)。

我对这些选项是否正确?如果是这样,似乎使用代码生成 api 规范文件确实是唯一明智的选择。

0 投票
1 回答
105 浏览

dtd - 使用 OpenAPI 定义“DTD”

我想定义一个模式并能够生成存根来解析它。我正在研究 OpenAPI 和 Swagger Codegen。我前段时间写了一个测试 XSD 并为它生成了 Java 绑定。这个模式只是一些 POJO。我知道使用其他工具的其他语言,但它不如 Swagger Codegen 广泛。

我已经将 OpenAPI 用于其他项目。对于这种情况,我不需要定义服务,只需要定义组件。我的想法是为每个未来版本建立一个模式并从中生成存根。

我也考虑过 SWIG,但需要 C++ 实现,它生成的语言更少。此外,编辑 YAML 比编写自己的 C++ 实现更有吸引力。

关于仅将 OpenAPI 用于组件的任何意见?非常感谢。

0 投票
1 回答
2580 浏览

java - 如何使用 Openapi Generator 从 Swagger yaml 生成 SpringBoot 模型

我们使用的是 API 优先方法,我们服务的 API 是在 swagger yamls 中定义的。然后我们使用 Openapi 生成器来生成必须由微服务实现的接口。此外,模型是从模式生成的。

这就是问题所在。在一个 REST 端点中,我使用了一个 XML,让 Spring-boot 将其解析为模型,然后将其保存到数据库中。目前我使用的模型看起来像这样:

与其他模型非常相似。我喜欢这个,因为 Spring-boot 可以使用它来自动解析传入的 XML,我可以将此模型直接保存到数据库并以 JSON 形式返回。

Openapi Generator 生成的模型缺少注解,因此无法用于解析 XML,也无法保存到数据库中。yaml 中有什么方法可以告诉它添加@Id,@Document和一些@Xml...注释吗?

我尝试这样做的主要原因(使用自动生成的模型表单)是因为这是一个更大的架构,如果有人更改 yaml 中的 API 定义会很好,例如添加微服务的字段会也可以再次构建,并且无需手动更新 java 类即可更新模型。我想到的另一种方法是像 Openapi 那样生成模型,然后用自己的类扩展它们,然后以某种方式添加注释,......但我想不出任何方法来做到这一点,这样你就不必更改派生的如果定义中的字段发生更改,则分类。

例子:

这没关系,但会缺少@Xml...某些字段上的注释。我已经看到它@JsonProperty("somename")在 json 命名的情况下生成 name 就好了,但似乎使用XML: name/attributeyaml 中的属性对生成的 java 代码没有任何影响(或者我做错了什么,试试这个:Documentation

我唯一能想到的就是使用@Overridegetter/setter 并用属性对其进行注释,但这意味着我必须接触每个使用 API 定义的模型的派生的微服务。我无法将派生类移动到 API 项目中,因为上下文(在本例中为 XML/mongo)可能因微服务而异。

关于这个的好方法有什么想法吗?

干杯

- - - 编辑 - - -

在深入挖掘之后,我越来越确定正确的方法可能是按照文档中提到的方式在 swagger yaml 中添加 XML 映射(@XmlAttribute/ @XmlElement)注释,然后在微服务代码中扩展它以添加数据库注释。基本上与第二个示例一样,只是在基类中 XML 注释已经由 swagger codegen 生成。但是,在构建模式/模型时,我还没有设法让 swagger codegen 生成任何 XML 注释。

0 投票
1 回答
2193 浏览

java - Openapi 生成器不生成@XmlAttribute/@XmlElement 注解

我目前正在摆弄 openapi 并尝试创建一个使用 XML 文件的端点。然而,当使用 openapi 创建模型时,我习惯的所有 XML 注释似乎都丢失了。这是我正在使用的 openapi.yaml。

模式是现在有问题的MyRequest东西。请注意,我将 name 属性声明为 XML 属性。生成的类如下所示:

我使用 spring-boot 生成器生成了这个。我本来希望@XmlAttribute在名称字段上方出现一个注释。我也曾期望会有一个@XmlRootElement一流的。

出于某种原因,我现在无法运行生成的代码,但似乎如果我将发送<MyRequest name="foobar">到端点,它将无法使用该模型解析它。

我是否错过了一些配置选项或任何东西,所以它会生成正确的注释?

查看openapi的源代码所需的注释在那里

0 投票
1 回答
4484 浏览

swagger - OAS3 指定的服务版本控制

我们目前正在使用 OpenAPI Service Specification v3 OAS3指定一个新的 REST 服务 API 。由于一系列不同的原因,我们需要/想要从一开始就对服务 API 进行版本控制(这是由我们无法控制的因素强制执行的)。

我们想要使用的版本控制方案是URL 路径版本控制- 即类似于.../v1/ourservice.

有人知道如何在 OAS3 规范中跟踪这样的版本控制方案吗?

到目前为止,我只version在 OAS3 中看到了一个全局属性 - 但没有任何东西可以让我们在一个 YAML 文件中轻松指定多个版本(或者这首先是错误的方法吗?)。

仅供参考,我们计划使用自上而下的方法,即将我们的服务 API 定义为 OAS3 YAML,然后继续使用 Swagger 生成器生成服务器和/客户端代码。