vs nuget 内安装 Swashbuckle.AspNetCore 

在program.cs内加入下边 几行基本就可以了

//builder.Services.AddSwaggerGen();
// <snippet_Services>
builder.Services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo
    {
        Version = "v1",
        Title = "ToDo API",
        Description = "An ASP.NET Core Web API for managing ToDo items",
        TermsOfService = new Uri("https://example.com/terms"),
        Contact = new OpenApiContact
        {
            Name = "Example Contact",
            Url = new Uri("https://example.com/contact")
        },
        License = new OpenApiLicense
        {
            Name = "Example License",
            Url = new Uri("https://example.com/license")
        }
    });

    options.CustomSchemaIds(x => x.FullName);
    options.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());

    // using System.Reflection;
    var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename), true); //假如需要显示控制器注释,就添加true
   
});
// </snippet_Services>

var app = builder.Build();
app.UseSwagger();
app.UseSwaggerUI();  

 加入到主页,项目启动默认是swagger

// 如果没有其他路由匹配,重定向到Swagger UI
// 注意:这应该是Configure方法中的最后一个中间件
app.Use(async (context, next) =>
{
    if (context.Request.Path == "/")
    {
        context.Response.Redirect("/swagger"); // 这里的URL应该与RoutePrefix相对应
    }
    else
    {
        await next();
    }
});

控制器例子

using Demo.Models;
using Microsoft.AspNetCore.Mvc;
namespace SwaggerDemo1.Controllers
{
/// <summary>
/// 用户管理控制器
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
public class UserController : ControllerBase
{
/// <summary>
/// 添加用户
/// </summary>
/// <param name="user">用户信息</param>
/// <returns></returns>

[HttpPost]
public bool Insert(UserInfoT user)
{
return true;
}
/// <summary>
/// 查看用户信息
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
[HttpGet("{userId}")]
public UserInfoV View(int userId)
{
var Result = new UserInfoV()
{
Id = 55,
Name = "Tom",
RoleId = 3,
RoleName = "学生"

};
return Result;
}
}
}

错误解决

打开faech err  查看似乎是找不到swagger.json 文件, 结果搜目录就是找不到, 这个文件是启动时自动生成的,一般也不在目录内找到. 所以问题查找应该在输出中查找原因

 错误 查看运行里边的日志错误,一般来说是有控制器不符合 swagger 标准导致, 如果不想让一个不标准的控制器加入到swagger 管理可以使用下边属性特性

 [ApiExplorerSettings(IgnoreApi = true)] 

这意味着Swagger将不会包括这个控制器中的任何操作(方法)在自动生成的API文档中。

 

posted on 2024-11-08 14:33  小石头的一天  阅读(9)  评论(0编辑  收藏  举报