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

2019-02-16 17:30发布

问题:

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

回答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";
            });


回答2:

  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.


回答3:

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/



回答4:

You can do this as well in Config

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