We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
入れ子構造のレスポンス部分について、MaiaとMarisで自動生成コードのフィールドの型名が異なってしまう。 (例)BasketResponse (Maris)'account'?: BasketResponseAccount | null; (Maia)'account'?: AccountResponse
'account'?: BasketResponseAccount | null;
'account'?: AccountResponse
2024/6/24現在、入れ子構造の入れ子部分の型名を参照しているサンプルコードはないためただちに影響はないが、 参照するようなコードが出てきた場合に、MaiaとMarisでクライアント側の実装を変える必要が発生してしまう。
直接の原因は、Maia(Springdoc-openapi)のAPI定義書とMaris(Nswag)のAPI定義書が異なるためである。 具体的には、Maris側はoneOfを使用して出力されるが、Maia側は使用していない。
Maia側とMaris側の差分を吸収する方法を調査し、反映する。
"properties": { "account": { "$ref": "#/components/schemas/AccountResponse" },
"account": { "description": "会計情報を取得または設定します。\n ", "nullable": true, "oneOf": [ { "$ref": "#/components/schemas/AccountResponse" }'
oneOfは同じエンドポイントから異なるスキーマのレスポンスを返したいときに使うようなので、 1種類のスキーマ or NULL のどちらかを返すことにしているMarisの定義が不自然に見えている。 よって、NSwagの出力がoneOfにならないように制御できるほうが好ましいはず。
https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/
requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/Cat' - $ref: '#/components/schemas/Dog''
The text was updated successfully, but these errors were encountered:
見えている選択肢は下記で、 仕様書の該当箇所の出力をそろえる方法か、クライアントコードの出力をそろえる方法が見つかればよい。
NSwag(or C#)をいじる oneOfを使わないようにする方法があれば、仕様書の該当箇所を一緒にできるはず。
Springdoc-openapi(or Java)をいじる oneOfを使うようにする方法があれば、仕様書の該当箇所を一緒にできるはず。
openapi-generator クライアントコードの出力方法の制御方法によっては、共通化できるはず。
放置する MaiaとMarisのクライアントコードを一致させたい、といったことは 通常の開発のユースケースとしては起きないはずなので、一旦放置する
Sorry, something went wrong.
DefaultResponseReferenceTypeNullHandling というオプションがある
デフォルト値はNotNull(もともとNullだったが、下記のPRでNotNullに変更された)
v14でこのオプションが効かなくなってしまった
下記を追加で動作する、と書いてあるが、追加してもうまく動作しない
document.SchemaSettings.DefaultReferenceTypeNullHandling = ReferenceTypeNullHandling.NotNull;
下記の2種類のオプションがある
v14に上げる際(.NET8対応)の時点は下記
"defaultReferenceTypeNullHandling": "Null", "defaultResponseReferenceTypeNullHandling": "NotNull",
初期構築時は下記で変わらず
初期構築時から定義書上oneOfが使われている
KentaHizume
No branches or pull requests
概要
入れ子構造のレスポンス部分について、MaiaとMarisで自動生成コードのフィールドの型名が異なってしまう。
(例)BasketResponse
(Maris)
'account'?: BasketResponseAccount | null;
(Maia)
'account'?: AccountResponse
2024/6/24現在、入れ子構造の入れ子部分の型名を参照しているサンプルコードはないためただちに影響はないが、
参照するようなコードが出てきた場合に、MaiaとMarisでクライアント側の実装を変える必要が発生してしまう。
直接の原因は、Maia(Springdoc-openapi)のAPI定義書とMaris(Nswag)のAPI定義書が異なるためである。
具体的には、Maris側はoneOfを使用して出力されるが、Maia側は使用していない。
Maia側とMaris側の差分を吸収する方法を調査し、反映する。
詳細
oneOfは同じエンドポイントから異なるスキーマのレスポンスを返したいときに使うようなので、
1種類のスキーマ or NULL のどちらかを返すことにしているMarisの定義が不自然に見えている。
よって、NSwagの出力がoneOfにならないように制御できるほうが好ましいはず。
完了条件
The text was updated successfully, but these errors were encountered: