web-dev-qa-db-fra.com

Comment rediriger root vers swagger dans Asp.Net Core 2.x?

Je construis une API web Asp.Net Core 2.x intégrée à Swagger. Pour accéder au swagger, j'ai dû ajouter/swagger à l'url, par exemple. https://mywebapi.azurewebsites.net/swagger/

Comment puis-je rediriger https://mywebapi.azurewebsites.net/ vers https://mywebapi.azurewebsites.net/swagger/ ?

10

Installer Microsoft.AspNetCore.Rewrite à partir de Nuget

Dans Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)

avant

app.UseMvc();

ajouter

var option = new RewriteOptions();
option.AddRedirect("^$", "swagger");
app.UseRewriter(option);
17

Dans Startup.cs

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)

Vous devriez avoir une section où vous définissez les options de l'interface utilisateur Swagger. Ajoutez et définissez l'option RoutePrefix sur une chaîne vide.

            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My service");
                c.RoutePrefix = string.Empty;  // Set Swagger UI at apps root
            });
15
Dmitriy B

Sur Startup.cs, après:

app.UseSwaggerUI(options =>
                  {
                      options.SwaggerEndpoint("/swagger/v1/swagger.json", "API V1");

ajouter :

options.RoutePrefix = string.Empty; 

cela fera de votre URL racine l'URL principale de l'API.

2
ArlanG

Créez un contrôleur par défaut comme celui-ci:

using Microsoft.AspNetCore.Mvc;

namespace Api
{
    [ApiExplorerSettings(IgnoreApi = true)]
    public class DefaultController : Controller
    {
        [Route("/")]
        [Route("/docs")]
        [Route("/swagger")]
        public IActionResult Index()
        {
            return new RedirectResult("~/swagger");
        }
    }
}

Toute URL "/", "/ docs" ou "/ swagger" est redirigée vers "/ swagger".

1
gpaoli
  1. Ouvrez le fichier launchSettings.json.
  2. Sous le nœud "profiles" selon votre configuration, vous devriez avoir un ou plusieurs profils. Dans le cas où je devais "IIS Express" et un autre avec nommé avec le nom de mon projet ( par exemple WebApplication1 ), changeant maintenant le launchUrl entrée à "launchUrl": "swagger" a résolu mon problème.
  3. Si cela ne fonctionne pas et que vous avez d'autres profils, faites de même et testez.
1
Mxaza

J'ai modifié le launchSettings.json avec "launchUrl": "swagger" au lieu de "launchUrl": "api/values"

travailler pour moi, si cela ne fonctionne pas pour vous, supprimez le c.RoutePrefix = string.Empty; à partir de votre configuration app.UseSwaggerUI.

0
Franco Morales