くうと徒然なるままに

ゆるふわ を志向している なごやかです。

ASP.NET Core で ルートページを開いたときに Swagger のページへ自動遷移するようにした

こんにちは。 ASP.net Core 2.x はいいぞ

ASP.NET Core を利用しWebAPIを作成していると ルートページ(http://example.com/) とかを開いたら自動で Swagger ページに遷移してほしいことはたまによくあると思います。

検証環境

ルートページに対応する Controller を追加する

ルーティングの設定

Visual Studio 2017 などを利用して Controller を 自動生成すると 標準で {ルートURL}/api/{Controller名} みたなルーティングになっていると思います。    
これは、[Route("")] で設定されています。   
今回は、ルートページを開いたときにあれこれしたいので、 Route attributeを消して、ルーティングの設定を消してください。

自動リダイレクトするようにする

リダイレクトされるようにするためには、 IAction Result を返り値に設定し、   
RedirectPermanent(); のメソッドを利用することでできます。   
引数に渡す文字列は、 ルートURLからのルーティングを設定します。   
具体的には、今回の場合は、 "{ルートURL}/Swagger" に飛ばしたいので、以下のようにします。 RedirectPermanent("/swagger");

ソースコード

public class HomeController : Controller
{
    [HttpGet]
    public IActionResult home()
    {
        return RedirectPermanent("/swagger");
    }
}