Can*_*ğlu 10 swagger typescript openapi openapi-generator
我正在尝试使用 OpenAPI Generator 4.0.0-SNAPSHOT(我们的经理出于某种原因要求我们使用该版本)生成 Typescript 客户端,该客户端读取 OpenAPI 3.0 规范。我们当前的所有端点要么接受查询字符串中的数据,要么接受表单正文中的数据,并且它们都工作得很好。我有一个新端点,它将在 POST 正文中读取 JSON 数据(其他端点最终也会被转换)。它将接受如下所示的对象:
{email: "something@domain.com"}
我正在尝试在 YAML 中记录端点,如下所示:
/users/send-password-reminder:
post:
[...]
requestBody:
content:
application/json:
schema:
type: object
properties:
email:
type: string
responses:
[...]
Run Code Online (Sandbox Code Playgroud)
但是,当我生成 Typescript 客户端时,它会生成一个SendPasswordReminderRequest对象,该对象包装一个自动生成的InlineObject1对象,该对象包装我实际的email.
这导致我像这样使用它:
const req: SendPasswordReminderRequest = {
inlineObject1:{
email: "..."
}
};
APIClient.user.sendPasswordReminder(req, ...)
Run Code Online (Sandbox Code Playgroud)
InlineObject1我想要的是完全摆脱它并SendPasswordReminderRequest直接包装email属性,并能够将其用作:
const req: SendPasswordReminderRequest = {
email: "..."
};
APIClient.user.sendPasswordReminder(req, ...)
Run Code Online (Sandbox Code Playgroud)
components/requestBodies我尝试在和 using中定义主体$ref,它仍然包装实际主体,即使它使用我的请求主体类型的名称。
我怎样才能摆脱这个包装?
小智 12
我不确定这是否仍然与您相关,但在代码中我找到了一种方法来解决根本不生成 InlineObjects 的问题
如果您为 requestBody 中使用的模式定义“title”,它将使用它title来命名内联对象。
因此,您可以获取类似于以下内容的内容,而不是获取 InlineObject:sendPasswordReminderRequestData,具体取决于您命名架构的方式。
希望这对您或其他人有帮助:)。
以下是如何将标题添加到 POST 请求的示例,以便通过客户端生成器使用友好名称生成标题(为简洁起见,省略了其他数据):
{
"openapi": "3.0.1",
"paths": {
"/Users/Hello": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"title": "UsersHelloRequest",
}
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3917 次 |
| 最近记录: |