You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Swashbuckle/NSwag是否支持为ASP.Net Web API 2生成OpenAPI 3规范?

关于.NET Framework 4.7 Web API 2生成OpenAPI 3.0规范的问题解答

我来给你理清楚这两个工具的实际情况:

Swashbuckle的现状

针对.NET Framework 4.7的ASP.NET Web API 2,官方的Swashbuckle.WebApi原生仅支持Swagger 2.0,并没有官方提供的OpenAPI 3.0支持版本。Swashbuckle的OpenAPI 3.0能力主要集中在Swashbuckle.AspNetCore系列包中,而这些包是专为.NET Core/.NET 5+设计的,和传统.NET Framework的Web API 2并不兼容。所以你之前用Swashbuckle只能生成Swagger 2.0的文件是正常现象,目前没有官方途径让它输出OpenAPI 3.0规范的文档。

NSwag的解决方案

NSwag是支持为.NET Framework 4.7的Web API 2生成OpenAPI 3.0规范的!你之前没成功大概率是配置不到位或者装错了包。

具体操作步骤:

  1. 安装正确的NuGet包:安装NSwag.AspNet.WebApi(注意不要选针对Core的包)
  2. 在项目的App_Start文件夹下创建或修改SwaggerConfig.cs,添加如下配置:
using NSwag.AspNet.WebApi;
using System.Web.Http;

public static class SwaggerConfig
{
    public static void Register(HttpConfiguration config)
    {
        var swaggerSettings = new SwaggerDocumentSettings
        {
            // 关键配置:指定生成OpenAPI 3.0规范
            SchemaType = NJsonSchema.SchemaType.OpenApi3,
            Title = "你的API名称",
            Version = "v1",
            Description = "API的功能描述"
        };

        // 启用Swagger文档生成
        config.EnableSwagger(swaggerSettings);
        // 启用Swagger UI可视化界面
        config.EnableSwaggerUi();
    }
}
  1. Global.asax.csApplication_Start方法中注册这个配置:
SwaggerConfig.Register(GlobalConfiguration.Configuration);

完成以上配置后,重新运行项目,访问Swagger UI或者直接请求/swagger/v1/swagger.json,就能得到符合OpenAPI 3.0规范的文档了。

内容的提问来源于stack exchange,提问作者Gireesh

火山引擎 最新活动