acacode / acacode/swagger-typescript-api

API client with discriminators is generated incorrectly

未关闭
#685 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
TypeScript
星标
4.1k
派生
436
PR 合并指标
30 天内没有已合并 PR

描述

Hi, here's an example schema:

Example schema

```yaml
openapi: 3.0.1
info:
title: Example API
version: v1
paths:
/pet:
post:
summary: Create pet
requestBody:
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- payload
discriminator:
propertyName: type
mapping:
CAT: '#/components/schemas/cat'
DOG: '#/components/schemas/dog'
properties:
type:
$ref: '#/components/schemas/pet_kind'
payload:
type: object
oneOf:
- $ref: '#/components/schemas/cat'
- $ref: '#/components/schemas/dog'
responses:
'204':
description: all good!

components:
schemas:
cat:
type: object
properties:
name:
type: string
breed:
type: string
dog:
type: object
properties:
name:
type: string
breed:
type: string
pet_kind:
type: string
description: type of animal
enum: [CAT, DOG]
```

it's a pretty simple schema with discriminator on the property `type` that determines the `payload` object. There's an enumb called `pet_kind` which has two options `CAT` and `DOG`.

## Expected behaviour

It's expected, that the `pet_kind` enum would be generated as `PetKind` in the data definition section and would be referenced in the API client.

## Actual begaviour

The `pet_kind` enum is generated correctly in the data definition secion:

```ts
/** type of animal */
export enum PetKind {
CAT = "CAT",
DOG = "DOG",
}
```

but is *not* referenced correctly in the API client, it is referenced as *`pet_kind`* which gives runtime and type errors:

```ts
postPet: (
data: {
data: BaseNull & (BaseNullTypeMapping | BaseNullTypeMapping);
},
params: RequestParams = {},
) =>
this.request({
path: `/pet`,
method: "POST",
body: data,
type: ContentType.Json,
...params,
}),
};
}

```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。