asp.net > swagger


環境

VS:VisualStudio2017
フレームワーク: .Net Framework 4.6

Swaggerをインストール

「ツール」→「NuGetパッケージマネージャー」→「NuGetパッケージの管理」

検索にSwashbuckle

実行

F5で実行する。

URLの後ろに「/swagger」を付けてアクセスする。
例)
http://localhost:60437/swagger/ui/index#/Values

以下のような画面が表示されれば成功

XMLコメントを表示する

以下のファイルを編集
App_Start > SwaggerConfig.cs

以下の文のコメントを外す

c.IncludeXmlComments(GetXmlCommentsPath());

SwaggerConfig.csの最後尾くらいに以下のメソッドを追加

private static string GetXmlCommentsPath()
{
        return string.Format(@"{0}\bin\SwaggerDemo.XML", System.AppDomain.CurrentDomain.BaseDirectory);
}

XMLの名称はアセンブリ名と一致させる。

この例では以下になる。

return string.Format(@"{0}\bin\SwaggerDemo.XML", System.AppDomain.CurrentDomain.BaseDirectory);

XMLコメント

以下のような容量でXMLコメントを付ける

/// <summary>
/// valuesをゲット
/// </summary>
/// <returns></returns>
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}

実行

XMLコメントが表示される。

Swaggerの見た目変更

以下のファイルを編集
App_Start > SwaggerConfig.cs

以下の行を外し、containingAssemblyをthisAssemblyに変更する。
(thisAssemblyは SwaggerConfig.csの先頭らへんで定義されている)

c.CustomAsset("index", thisAssembly, "NameSpace.SwaggerExtensions.index.html");

NameSpaceには以下プロジェクト・プロパティで表示される規定の名前空間に表示されている名前を設定する。

この例では以下になる。

c.CustomAsset("index", thisAssembly, "ECommerceName.SwaggerExtensions.index.html");

Index.htmlの配置

SwaggerExtensionsフォルダを作成し、index.htmlファイルを作成する。

index.htmlファイルは以下をベースにする。
Swashbuckle/index.html at v5.5.3 · domaindrivendev/Swashbuckle

ビルドアクション

index.htmlのプロパティにて、ビルドアクションを埋め込みリソースに変更する

参考

c# - swagger-ui returns 500 after deployment - Stack Overflow

How to customize Swagger UI in ASP.NET Web API – Umamaheswaran

ASP.NET Web API2.2で、Swagger(Swashbuckle 5.1.5)を使う - BEACHSIDE BLOG