将 swagger 添加到空白 ASP.NET+React 解决方案
美好的一天。
我只是通过命令通过代码生成器创建一个空白解决方案
dotnet new react -o MyReactApp
我正在尝试在这里添加 Swagger。所以我安装了 nugets 并编辑了 Program.cs。操作系统是 Windows 10、.NET 7。
Progam.cs 现在是
using Microsoft.OpenApi.Models;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
});
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
} else
{
/*app.MapEndpoints(endpoints =>
{
// ...
endpoints.MapSwagger();
});*/
app.MapSwagger();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "My API V1");
});
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
app.MapFallbackToFile("index.html");
app.Run();
我没有看到任何招摇。我正在尝试在本地主机上运行常用的 URL,并在末尾添加“/swagger”。什么也没发生,我在客户端控制台中看到该 URL 不存在。我有一种感觉(无论正确与否),react-router(此处使用的)正在拦截 URL 以进行招摇。
我该怎么办?
在 Visual Studio 中,有一个选项可以在模板中启用 OpenAPI 支持。也许 dotnet cli 中也有类似的选项来启用 OpenAPI 支持。不过,我使用此选项创建了一个项目,其 Program.cs 如下所示:
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();
app.UseDefaultFiles();
app.UseStaticFiles();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.MapFallbackToFile("/index.html");
app.Run();
但是此模板默认不支持您想在代码中使用的 api 版本控制。您可以在这里了解如何实现这一目标。