问题标签 [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.
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
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 很好地解析了类型定义。但是,该应用程序不会构建。
构建失败并出现错误:
出于保密原因,我更改了文件名。
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之后,我仍然不太清楚如何实现这一点。
任何帮助将不胜感激。
swagger - 在没有 swagger.json 的情况下使用 OpenAPI/Swagger CodeGen
我有一个没有考虑Swagger构建的 REST API 。它没有 swagger.json 文件。我不控制这个 API。API 基于 URL,响应 GET、POST 和 PUT 请求,并返回 JSON 或 XML。
是否有前进的道路可以让我swagger-codegen
通过这个 API 使用该工具?也就是说,我知道我通常可以为 API 生成客户端代码
我想知道是否有办法
- 为 API 编写我自己的 swagger.json 文件
- 做——什么?-- 将请求和响应转换为这个遗留 REST API 所期望的格式
swagger/OpenAPI 工具是否有任何允许上述内容的功能,或者是否超出了项目的范围?
java - openapi 生成 - 初始化对象
我正在使用 openapi-generator-maven-plugin 从我的 yml 文件生成代码。
当从 yml 生成对象时,生成的代码总是生成对象并用 null 初始化它们。
例如:
有没有一种方法可以用对象本身初始化对象,例如:
java - OpenAPI - 为不断变化的 api 生成服务器代码?
我正在维护一个 Java 应用程序,我们在其中不断添加新功能(api 的更改)。我想转向使用 OpenAPI 作为记录 api 的一种方式。我看到了两种思想流派:
- 编写代码,使用一些注释来生成 OpenAPI 规范。
- 编写 OpenAPI,用它来生成一些服务器代码。
虽然两者看起来都很好而且很花哨,但服务器代码只是被删除了,然后需要大量手动插入服务。虽然这似乎是一次性成本,但下次我更新界面时,在我看来只有两个选择是
- 再次生成它们,重新进行所有手动接线。
- 手动编辑先前生成的类以匹配新的规范文件(可能会引入错误)。
我对这些选项是否正确?如果是这样,似乎使用代码生成 api 规范文件确实是唯一明智的选择。
dtd - 使用 OpenAPI 定义“DTD”
我想定义一个模式并能够生成存根来解析它。我正在研究 OpenAPI 和 Swagger Codegen。我前段时间写了一个测试 XSD 并为它生成了 Java 绑定。这个模式只是一些 POJO。我知道使用其他工具的其他语言,但它不如 Swagger Codegen 广泛。
我已经将 OpenAPI 用于其他项目。对于这种情况,我不需要定义服务,只需要定义组件。我的想法是为每个未来版本建立一个模式并从中生成存根。
我也考虑过 SWIG,但需要 C++ 实现,它生成的语言更少。此外,编辑 YAML 比编写自己的 C++ 实现更有吸引力。
关于仅将 OpenAPI 用于组件的任何意见?非常感谢。
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/attribute
yaml 中的属性对生成的 java 代码没有任何影响(或者我做错了什么,试试这个:Documentation)
我唯一能想到的就是使用@Override
getter/setter 并用属性对其进行注释,但这意味着我必须接触每个使用 API 定义的模型的派生的微服务。我无法将派生类移动到 API 项目中,因为上下文(在本例中为 XML/mongo)可能因微服务而异。
关于这个的好方法有什么想法吗?
干杯
- - - 编辑 - - -
在深入挖掘之后,我越来越确定正确的方法可能是按照文档中提到的方式在 swagger yaml 中添加 XML 映射(@XmlAttribute
/ @XmlElement
)注释,然后在微服务代码中扩展它以添加数据库注释。基本上与第二个示例一样,只是在基类中 XML 注释已经由 swagger codegen 生成。但是,在构建模式/模型时,我还没有设法让 swagger codegen 生成任何 XML 注释。
java - Openapi 生成器不生成@XmlAttribute/@XmlElement 注解
我目前正在摆弄 openapi 并尝试创建一个使用 XML 文件的端点。然而,当使用 openapi 创建模型时,我习惯的所有 XML 注释似乎都丢失了。这是我正在使用的 openapi.yaml。
模式是现在有问题的MyRequest
东西。请注意,我将 name 属性声明为 XML 属性。生成的类如下所示:
我使用 spring-boot 生成器生成了这个。我本来希望@XmlAttribute
在名称字段上方出现一个注释。我也曾期望会有一个@XmlRootElement
一流的。
出于某种原因,我现在无法运行生成的代码,但似乎如果我将发送<MyRequest name="foobar">
到端点,它将无法使用该模型解析它。
我是否错过了一些配置选项或任何东西,所以它会生成正确的注释?
查看openapi的源代码所需的注释在那里
swagger - OAS3 指定的服务版本控制
我们目前正在使用 OpenAPI Service Specification v3 OAS3指定一个新的 REST 服务 API 。由于一系列不同的原因,我们需要/想要从一开始就对服务 API 进行版本控制(这是由我们无法控制的因素强制执行的)。
我们想要使用的版本控制方案是URL 路径版本控制- 即类似于.../v1/ourservice
.
有人知道如何在 OAS3 规范中跟踪这样的版本控制方案吗?
到目前为止,我只version
在 OAS3 中看到了一个全局属性 - 但没有任何东西可以让我们在一个 YAML 文件中轻松指定多个版本(或者这首先是错误的方法吗?)。
仅供参考,我们计划使用自上而下的方法,即将我们的服务 API 定义为 OAS3 YAML,然后继续使用 Swagger 生成器生成服务器和/客户端代码。