web-dev-qa-db-ja.com

ルートURLから/ swagger / ui / indexにリダイレクトする方法は?

SwashbuckleがインストールされたWebApiプロジェクトがあります。

デフォルトのセットアップでは、ブラウザで開く必要がありますhttp://localhost:56131/swagger/ui/index私の操作の説明とテストページを表示します。サイトのルートからアクセスできるようにしたい:http://localhost:56131/。どうすればこれを達成できますか?

13
v.karbovnichy

同様の質問に対するこの回答 の影響を受け、コードがわずかに変更されました:

public class WebApiConfig
{
    public static void Configure(IAppBuilder app)
    {
        var httpConfig = new HttpConfiguration();

        // Attribute routing
        config.MapHttpAttributeRoutes();

        // Redirect root to Swagger UI
        config.Routes.MapHttpRoute(
            name: "Swagger UI",
            routeTemplate: "",
            defaults: null,
            constraints: null,
            handler: new RedirectHandler(SwaggerDocsConfig.DefaultRootUrlResolver, "swagger/ui/index"));

        // Configure OWIN with this WebApi HttpConfiguration
        app.UseWebApi(httpConfig);
    }
}

この方法では、@ bsoulierが回答で行ったように、新しいWebAPIコントローラを作成する必要はありません。

このソリューションは、Swashbuckle.Coreアセンブリの既存のクラスRedirectHandlerに基づいています。

27
v.karbovnichy

Web APIプロジェクトを確実に使用する場合は、次のことができます。

[Route(""), HttpGet]
[ApiExplorerSettings(IgnoreApi = true)]
public HttpResponseMessage RedirectToSwaggerUi()
{
    var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.Found);
    httpResponseMessage.Headers.Location = new Uri("/swagger/ui/index", UriKind.Relative);
    return httpResponseMessage;
}

Swagger定義に表示されないように、ApiExplorerSettings属性の使用に注意してください。

8

上記の答えのさらに簡単な変形:

public class DefaultController : Controller
{
    [Route(""), HttpGet]
    [ApiExplorerSettings(IgnoreApi = true)]
    public RedirectResult RedirectToSwaggerUi()
    {
        return Redirect("/swagger/");
    }
}

シンプルなほど良いです!これは私のために働きます。

2
Gunnar Siréus

ために .net coreプロパティlaunchsettings.jsonで、プロファイルとapiセクションを変更してswaggerを指すようにします。

profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "authapi": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
1
Hal Davis

Asp.netコア2.1/2.2のlaunchSetting.JsonのlaunchUrl = "swagger/index.html"の値を変更します

"ProjectName": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "swagger/index.html",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:44333"
    }
0
San Jaisy

タスクで許可されている場合は、_layout.chtmlで頭に次の行を追加します。

<meta http-equiv="refresh" content="0; URL='/swagger'" />

これにより、ページが読み込まれた後にswagger/indexにリダイレクトされます

0
VanavaraVL