Как перенаправить из корневого url в / swagger/ui / index?

у меня есть проект WebApi с установленным на нем Swashbuckle.

в настройки по умолчанию, я должен открыть в браузере http://localhost:56131/swagger/ui/index для просмотра описания моих операций и тестовой страницы. Я хочу, чтобы он был доступен из корня сайта: http://localhost:56131/. Как я могу достичь этого?

4 ответов


влияние этот ответ на аналогичный вопрос, немного измененный код:

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);
    }
}

таким образом, нет необходимости создавать новый контроллер WebAPI, как это сделал @bsoulier в своем ответе.

это решение основано на уже существующем классе RedirectHandler на Swashbuckle.Core сборка.


Если вы наверняка используете проект 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;
}

обратите внимание на использование ApiExplorerSettings атрибут, так что он не отображается в определении Swagger.


еще проще вариант ответа:

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

чем проще, тем лучше! Этот работает на меня.


если задача позволяет, в _Layout.chtml просто добавьте следующую строку в голову:

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

это перенаправит вас на swagger / index после загрузки страницы