Как перенаправить из корневого 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, вы можете:
- включить Маршрутизация Атрибутов Http,
- создайте следующий метод в существующем или новом контроллере:
[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 после загрузки страницы