0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

swagger editorでサーバー側のコードをaspnetcoreで出力した時の話

Posted at

なぜSwaggerなのか

元々typescript+expressで地道に作成していたWebAPIのソースコードが肥大化してきて管理がしづらくなってきたのでSwaggerのyamlで管理しようと考えたのが始まりです。

APIドキュメントも作成できるのでパッと見でどんなAPIがあるのかわかりやすくなる利点もあります。
Request,Response用のクラスを作るのが面倒だったわけでは決してありません。。。

コードを出力してみる

■Swagger Editor
https://editor.swagger.io/

左側のyamlファイルを入力してから[Generate Server] → [aspnetcore]を選択すると
ソースコード一式がダウンロードされます。

Pasted image 20230201070425.png

[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となっています。

Pasted image 20230201071516.png
Pasted image 20230201071630.png

このターゲットフレームワークを.Net 7.0に変更します。

Pasted image 20230201071826.png

Swashbuckleのバージョンも古い

というわけなのでSwashbuckleもバージョンを上げてしまいましょう。
NuGet → 更新プログラムからまとめて更新します。

途中で出てくるダイアログは全部OKで!
Pasted image 20230201071958.png
Pasted image 20230201072314.png

swagger.yamlの記述に問題なければこれで問題なく起動できるはずです。

まぁ問題なく起動できなかったんですけど。

私の環境ではなぜか上記のメッセージが表示されてIIS Expressが起動できません。
Pasted image 20230201072521.png

ただ、同じ手順で会社のPCで試した時は問題なく起動したので
自PCの問題かもしれません。

起動してSwagger UIが表示された皆さんはおめでとうございます。

どうも50352ポートが使用されているとメッセージが出てくるんですけど
調べても使ってないし、task killしても引き続きエラーになります。

回避策(解決はしてない)

雑な方法ですが、launchSettings.jsonを書き換えます。
Pasted image 20230201072947.png
Pasted image 20230201073258.png

8080とかに書き換えましたが他のアプリケーションと被らないポートを設定してください。

このあと一応リビルドかけてVisual Studioをいったん閉じて開き直します。

おまけ

Startuo.csで下記の様なエラーになる場合はTermsOfServiceの行をコメントアウトすればエラーにならなくなります。swagger.yamlでキチンと定義してあれば問題ないはず。
Pasted image 20230201073855.png

APIドキュメントが表示されていればOKです!
お疲れ様でした!
Pasted image 20230201073812.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?