Ответ 1
Новая версия Swagger предоставляет вам свойство под названием RoutePrefix.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
По умолчанию, когда вы включаете swagger в проекте ASP.NET Core, он доступен по URL-адресу:
http://localhost:<random_port>/swagger/ui
Я хотел бы использовать другой базовый url вместо /swagger/ui
. Как/где я могу настроить это?
Я обнаружил, что для более старых версий вы можете настроить RootUrl
но в ASP.NET Core нет аналогичного метода:
.EnableSwagger(c =>
{
c.RootUrl(req => myCustomBasePath);
});
Новая версия Swagger предоставляет вам свойство под названием RoutePrefix.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = "docs";
});
Для ASP.NET Core 2 (и с использованием Swashbuckle.AspNetCore.Swagger -Version 4.0.1
) можно сделать несколько вещей для полной конфигурации изменения базового URL-адреса пользовательского интерфейса Swashbuckle.AspNetCore.Swagger -Version 4.0.1
по умолчанию.
Если вы хотите добавить "mycoolapi" в начало URL-адреса вашего пользовательского интерфейса по умолчанию, например: http://<server>/mycoolapi/swagger
, то выполните следующие действия:
В вашем Startup.cs настройте метод:
app.UseSwagger(c =>
{
c.RouteTemplate = "mycoolapi/swagger/{documentname}/swagger.json";
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/mycoolapi/swagger/v1/swagger.json", "My Cool API V1");
c.RoutePrefix = "mycoolapi/swagger";
});
Затем, если в настоящее время у вас есть launchSettings для запуска браузера в Swagger UI при запуске (для целей разработки), обновите раздел профилей файла launchSettings.json аналогично:
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "mycoolapi/swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyProject.Web": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "mycoolapi/swagger",
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
UseSwaggerUi()
расширения UseSwaggerUi()
для включения промежуточного ПО в методе Configure для класса StartUp принимает две переменные. baseRoute
который по умолчанию имеет значение swaggerUrl
swagger/ui
, и swaggerUrl
который по умолчанию находится по swagger/v1/swagger.json
. Просто укажите другой baseRoute.
//Swagger will be available under '/api' url
app.UseSwaggerUi("api");
Если люди хотели бы узнать больше о настройке Swagger для ASP.NET Core, я написал блог-версию для начала работы: https://dannyvanderkraan.wordpress.com/2016/09/09/asp-net-core-1- 0-веб-апи-автомат-документация-с-чванством-и-swashbuckle/
Вы можете сделать это также в Config
app.UseSwaggerUI(c =>
{
c.RoutePrefix = string.Empty;
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
});