为 ASP.NET 设置 Swagger

问题描述 投票:0回答:1

将 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 以进行招摇。

我该怎么办?

reactjs asp.net react-router swagger
1个回答
0
投票

在 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 版本控制。您可以在这里了解如何实现这一目标。

© www.soinside.com 2019 - 2024. All rights reserved.