なぜSwaggerなのか
元々typescript+expressで地道に作成していたWebAPIのソースコードが肥大化してきて管理がしづらくなってきたのでSwaggerのyamlで管理しようと考えたのが始まりです。
APIドキュメントも作成できるのでパッと見でどんなAPIがあるのかわかりやすくなる利点もあります。
Request,Response用のクラスを作るのが面倒だったわけでは決してありません。。。
コードを出力してみる
■Swagger Editor
https://editor.swagger.io/
左側のyamlファイルを入力してから[Generate Server] → [aspnetcore]を選択すると
ソースコード一式がダウンロードされます。
[aspnetcore-server-generated.zip]というファイルを解凍すると[IO.Swagger.sln]があるのでそちらをクリックしてvisual studioを起動します。
■Visual Studio 2022 Communityは無料で使えます
https://visualstudio.microsoft.com/ja/vs/community/
.Netのバージョンが古い
プロジェクトファイルのプロパティを見てみると、.Net Core 3.1となっています。
このターゲットフレームワークを.Net 7.0に変更します。
Swashbuckleのバージョンも古い
というわけなのでSwashbuckleもバージョンを上げてしまいましょう。
NuGet → 更新プログラムからまとめて更新します。
swagger.yamlの記述に問題なければこれで問題なく起動できるはずです。
まぁ問題なく起動できなかったんですけど。
私の環境ではなぜか上記のメッセージが表示されてIIS Expressが起動できません。
ただ、同じ手順で会社のPCで試した時は問題なく起動したので
自PCの問題かもしれません。
起動してSwagger UIが表示された皆さんはおめでとうございます。
どうも50352ポートが使用されているとメッセージが出てくるんですけど
調べても使ってないし、task killしても引き続きエラーになります。
回避策(解決はしてない)
雑な方法ですが、launchSettings.jsonを書き換えます。
8080とかに書き換えましたが他のアプリケーションと被らないポートを設定してください。
このあと一応リビルドかけてVisual Studioをいったん閉じて開き直します。
おまけ
Startuo.csで下記の様なエラーになる場合はTermsOfServiceの行をコメントアウトすればエラーにならなくなります。swagger.yamlでキチンと定義してあれば問題ないはず。