For ASP.NET Core 2 (and using Swashbuckle.AspNetCore.Swagger -Version 4.0.1
), a couple things can be done for a full configuration of changing the default swagger UI base URL.
If you want to add "mycoolapi" to the beginning of your default swagger UI URL, like this: http://<server>/mycoolapi/swagger
, then do the following:
In your Startup.cs Configure method:
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";
});
Then, if you currently have your launchSettings to launch browser at swagger UI upon startup (for development purposes), update your launchSettings.json file profiles section similarly:
"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"
}
}
}
RoutePrefix
alone isn't enough if you want to use URL prefix like/prefix/swagger/...
for both Swagger UI and swagger.json file. You also need to setRouteTemplate
property. – Archaeozoic