おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

SwaggerUIで特定のMediaTypeを選択できるようにする方法。

はじめに

ASP.NET Core + SwaggerUIの画面でMediaTypeを切り替える箇所がありますが、こちらの選択オプションを変更する方法を記載します。 デフォルトでは以下のように「text/plain」「application/json」「text/json」の3つが表示されます。

mediatypeDefault.png

ProducesAttributeクラス

こちらを実現するためにProducesAttributeクラスを用います。

ProducesAttribute クラス (Microsoft.AspNetCore.Mvc) | Microsoft Docs

下記のリンクではProducesAttributeクラスをSwashbuckleで利用した例が記載されていますがNSwagでも同じ挙動になります。

Swashbuckle と ASP.NET Core の概要 | Microsoft Docs

サンプルコード

[Produces("application/json", "text/csv")]
[HttpGet]
public IActionResult Get()
{
    //何かしらの処理
}

ビルド後にSwaggerUIを起動すると、以下のようにMediaTypeが「application/json」と「text/csv」の2つになっていることが分かります。

Swashbukleの場合

mediatype.png

NSwagの場合

mediatype2.png

おわりに

SwaggerはWebAPIテンプレートを利用する際は自動で付いてくるので今まで何となく使っていたのですが、ちゃんと勉強しないとですね...(;´∀`) 細かなUIを作る方法も少しずつ学んでいきたいと思います。