Swaggerは、RESTfulスタイルのウェブサービスの構築、記述、呼び出し、可視化のための規範的かつ完全なフレームワークです。
全体的な目標は、クライアントとファイルシステムがサーバーと同じ速度で更新することです。 ファイルのメソッド、パラメータ、モデルはサーバーサイドのコードに密接に統合されており、API同士が常に同期を保つことができます。 Swaggerは強力なAPIの展開や利用をこれまでになく簡単にしました。
復習
まず、Core 3.1 ASP.NET 新しいプロジェクトを作成し、nugetを使って以下のコマンドでSwashbuckle.AspNetCoreパッケージをインストールします。
startup.csファイル内のSwaggerサービスを次のように設定します:
ConfigureServicesメソッド
構成メソッド
以下のコードで新しいテストコントローラを作成します:
テストコントローラのインターフェース作成製品パラメータモデルオブジェクトは以下の通りです:
プロジェクト開始後、以下にアクセスできます:http://localhost:18979/swagger/index.html、下図に示されているように:
swagger.json 内容は以下の通りです:
{ 「openAPI」: "3.0.1", 「情報」:{ 「title」:「My API」、 「バージョン」:「V1」 }, 「パス」:{ "/api/Test/Create": { 「投稿」:{ 「タグ」: [ 「テスト」 ], "requestBody": { 「内容」:{ "application/json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } }, "text/json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } }, "application/*+json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } } } }, 「レスポンス」:{ "200": { 「説明」:「成功」、 「内容」:{ 「テキスト/プレーン」: { 「スキーマ」:{ 「タイプ」:「文字列」 } }, "application/json": { 「スキーマ」:{ 「タイプ」:「文字列」 } }, "text/json": { 「スキーマ」:{ 「タイプ」:「文字列」 } } } } } } } }, 「コンポーネント」: { 「スキーマ」:{ 「情報」:{ 「type」:「オブジェクト」、 「プロパティ」:{ 「isDiscount」: { 「タイプ」:「ブール」 }, 「isVip」: { 「タイプ」:「ブール」 「nullable」:真 } }, 「additionalProperties」:false }, 「製品」:{ 「type」:「オブジェクト」、 「プロパティ」:{ 「名前」:{ 「type」:「string」、 「nullable」:真 }, 「disabled」:{ 「タイプ」:「ブール」 }, 「情報」:{ 「$ref」:「#/components/schemas/Information」 } }, 「additionalProperties」:false } } }
}
ブール型もnullable Boolean 型もデフォルトでtrueであることがわかりました。日々の開発では、ブールが割り当てられていない場合、デフォルトはfalse、null型はnullにすべきですパラメータが気づかない場合は、コミットをシミュレートするためにswaggerを使おうとします。事故は起こりやすいものです。 (先週、swaggerを使ってブールパラメータがデフォルトで真であることをシミュレートし、WeChatのメッセージが全人に配信されました。)
ブール型をデフォルトでfalseに割り当てるにはどうすればいいですか? null型にnullを割り当てるのはどうでしょうか?
ISchemaFilterから継承する新しいクラスを作成し、そのコードは以下の通りです。
そしてswaggerサービスを追加する際は、以下のようにフィルターAddSwaggerGenを追加してください:
特定のブールフィールドでは、デフォルト値をtrueに設定し、追加することができます[DefaultValue(true)]特徴は以下の通りです。
{ 「名前」:「文字列」、 「disabled」:真、 「情報」:{ 「isDiscount」:false、 「isVip」:null }
} swagger.json ファイルは以下の通りです:
{ 「openAPI」: "3.0.1", 「情報」:{ 「title」:「My API」、 「バージョン」:「V1」 }, 「パス」:{ "/api/Test/Create": { 「投稿」:{ 「タグ」: [ 「テスト」 ], "requestBody": { 「内容」:{ "application/json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } }, "text/json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } }, "application/*+json": { 「スキーマ」:{ 「$ref」:「#/components/schemas/Product」 } } } }, 「レスポンス」:{ "200": { 「説明」:「成功」、 「内容」:{ 「テキスト/プレーン」: { 「スキーマ」:{ 「タイプ」:「文字列」 } }, "application/json": { 「スキーマ」:{ 「タイプ」:「文字列」 } }, "text/json": { 「スキーマ」:{ 「タイプ」:「文字列」 } } } } } } } }, 「コンポーネント」: { 「スキーマ」:{ 「情報」:{ 「type」:「オブジェクト」、 「プロパティ」:{ 「isDiscount」: { 「タイプ」:「ブール」 「default」:false }, 「isVip」: { 「タイプ」:「ブール」 「デフォルト」:null、 「nullable」:真 } }, 「additionalProperties」:false }, 「製品」:{ 「type」:「オブジェクト」、 「プロパティ」:{ 「名前」:{ 「type」:「string」、 「nullable」:真 }, 「disabled」:{ 「タイプ」:「ブール」 「デフォルト」:真 }, 「情報」:{ 「$ref」:「#/components/schemas/Information」 } }, 「additionalProperties」:false } } }
} (終わり)
|