-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
全てOptionalなプロパティを持つオブジェクトが正しく変換されない #132
Comments
投稿ありがとうございます! このIssueをきっかけに振る舞いを変更しました |
なるほど。 よって、デフォルトでは仕様に準拠した変換を行い、オプションで挙動を変更できるようにするべきだと思います。 |
required を記述していない query parameter が optional にならずに調べていて、この issue にたどり着きました。
この挙動を支持します。この件に関して何か既に対応されていますでしょうか?もしくは予定はありますか? |
同じく… |
ワークアラウンドとしてはpatch-packageで以下を適用するとoptionalに変えることができました
|
#147 私も同様に optional にフォールバックするようにしたほうが良いと思います。オプションを用意するのも、亜種規格を作ることになっていいことにはならなさそう…とは思います… EDIT: あ、対応自体はもうあるのか! |
@solufa |
こちらのissueに関しては、OpenAPIの仕様通りの挙動にすることにしました。なお、従来の挙動は設定としても残さない方針です。 |
この対応はすでにリリースされていますか? Schema# pet.yaml
swagger: '2.0'
info:
version: 1.0.0
title: Swagger Petstore
paths:
/pets:
get:
responses:
'200':
description: A paged array of pets
headers:
x-next:
type: string
description: A link to the next page of responses
schema:
type: 'object'
properties:
id:
type: integer
format: int64
name:
type: string
tag:
type: string
default:
description: unexpected error
schema:
type: 'object'
required:
- code
properties:
code:
type: integer
format: int32 Generated type$ npx openapi2aspida --version
v0.21.0
$ npx openapi2aspida -i pet.yaml
api/$api.ts was built successfully.
api/pets/$api.ts was built successfully. /* eslint-disable */
export type Methods = {
get: {
status: 200
/** A paged array of pets */
resBody: {
id: number
name: string
tag: string
}
resHeaders: {
/** A link to the next page of responses */
'x-next': string
}
}
} Expected type( /* eslint-disable */
export type Methods = {
get: {
status: 200
/** A paged array of pets */
resBody: {
id?: number | undefined
name?: string | undefined
tag?: string | undefined
}
resHeaders: {
/** A link to the next page of responses */
'x-next': string
}
}
} |
Description
全てOptionalなプロパティを持つオブジェクトが、出力された型で全て必須になっています。
出力結果
期待される結果
仕様では全てのプロパティはデフォルトでOptionalです。
https://swagger.io/docs/specification/data-models/data-types/#ctxM:~:text=By%20default%2C%20all%20object%20properties%20are%20optional.
一応
required
に空の配列を指定することで回避できると思われますが、上記仕様で空の配列は指定してはならないと明記されています。Environment
v0.16.1
14.16.0
``
6.14.11
``
Additional context
原因箇所はここだと思われます。
openapi2aspida/src/builderUtils/converters.ts
Line 62 in 1619112
The text was updated successfully, but these errors were encountered: