How to change base url of Swagger in ASP.NET core

By default when you enable swagger in ASP.NET Core project it’s available on url:

http://localhost:<random_port>/swagger/ui

I would like to use a different base url instead of /swagger/ui. How/where can i configure that?

I found that for older versions you can configure the RootUrl but there aren’t similiar method in ASP.NET Core:

.EnableSwagger(c =>
{
    c.RootUrl(req => myCustomBasePath);
});

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

The new swagger version provides you with a property called RoutePrefix.

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
    c.RoutePrefix = "docs";
});

Should work for .net core

Method 2

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"
      }
    }
  }

Method 3

You can do this as well in Config

app.UseSwaggerUI(c =>
            {
                c.RoutePrefix = string.Empty;
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "MY API");
            });

Method 4

Other answers didn’t work for me in .NET 5. Here is how I added ‘docs’ to the route

app.UseSwagger(c => c.RouteTemplate = "/swagger/docs/{documentName}/swagger.json");
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/docs/v2/swagger.json", "My API"));

Method 5

  1. Open the launchSettings.json file.
  2. Under the “profiles” node depending on your setup you should have one or more profiles. In may case I had “IIS Express” and another with named with my project name (e.g WebApplication1 ), now changing the launchUrl entry to “launchUrl”: “swagger” solved my problem.
  3. If this does not work and you have other profiles do the same and test.

Method 6

I had to dig through the original docs because all the above solutions did not work. This code in Startup.cs is what is working for me:

app.UseSwagger();
app.UseSwaggerUI(c => {
    c.SwaggerEndpoint($"./v1/swagger.json", "SapWeb v1");
});

My site is a subsite in IIS. So, at first, I had to set PathBase:

app.UsePathBase($"{pathbase}");

Method 7

The UseSwaggerUi() extension method to enable the middleware in the Configure method of the StartUp class takes two variables. A baseRoute which is on swagger/ui by default, and swaggerUrl which is on swagger/v1/swagger.json by default. Simply provide a different baseRoute.

//Swagger will be available under '/api' url
app.UseSwaggerUi("api");

If people would like to learn more about configuring Swagger for ASP.NET Core, I’ve written a blogpost to get started: https://dannyvanderkraan.wordpress.com/2016/09/09/asp-net-core-1-0-web-api-automatic-documentation-with-swagger-and-swashbuckle/


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x