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/ ?
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);
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
});
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.
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".
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.