从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(二)

科技资讯 投稿 8600 0 评论

从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(二)

传送门:从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)

一、设置Swagger页面为首页——开发环境

/swagger 后顺利的访问 Swagger UI 页面,但是我们发现每次运行项目都会默认访问 /weatherforecast 这个接口,想要将启动页设为 /swagger (或者其他页面)就需要用到配置文件 launchSettings.json。

二、设置Swagger页面为首页——生产环境

幸运的是,Swagger 提供了一个扩展,可以指定一个空字符作为 Swagger 的地址。在 Startup.cs 文件的 Startup 类的 Configure 方法中配置中间件,如下图所示,代码如下所示。

            #region Swagger
            app.UseSwagger(;
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/DocV1/swagger.json", "DocV1";//此为之前配置内容
                c.RoutePrefix = "";//此为本次新增配置项
            };
            #endregion

然后把配置文件 launchSettings.json 的 launchUrl 属性注释或删除,如下图所示,这样无论是本地开发环境还是生产环境,都可以默认加载 Swagger UI 页面了。

三、添加注释

1、给接口添加注释

    /// <summary>
    /// 天气预报
    /// </summary>
    [ApiController]
    [Route("[controller]"]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger
        {
            _logger = logger;
        }

        /// <summary>
        /// 获取天气
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public IEnumerable<WeatherForecast> Get(
        {
            var rng = new Random(;
            return Enumerable.Range(1, 5.Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index,
                TemperatureC = rng.Next(-20, 55,
                Summary = Summaries[rng.Next(Summaries.Length]
            }
            .ToArray(;
        }
    }

添加好注释之后,接下来就需要把注释信息显示在 Swagger 中,这时候需要用到 XML 文档,因为它是通过 XML 来维护 Swagger 文档的一些信息。

重新编译项目后,系统会在 bin\Debug\net5.0 路径下默认生成一个与项目名称相同的 XML 文件,前后对比如下图所示。

接下来修改 Swagger 服务注入的代码。在 Startup.cs 文件的 Startup 类的 ConfigureServices 方法中进行修改,代码如下所示。

            #region Swagger
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("DocV1", new OpenApiInfo
                {
                    Version = "v0.1.0",
                    Title = "ZOHC测试文档",
                    Description = "一个Swagger教程文档",
                    Contact = new OpenApiContact
                    {
                        Name = "张欧昊辰",
                        Email = "izohc@foxmail.com"

                    }
                };


                #region 添加注释新增内容
                var basePath = AppContext.BaseDirectory;
                var projectName = AppDomain.CurrentDomain.FriendlyName;
                var xmlPath = Path.Combine(basePath, projectName + ".xml";
                c.IncludeXmlComments(xmlPath, true;
                #endregion

            };
            #endregion

2、给Model添加注释

当类库创建成功后,我们将“AllTestDemo”下的“WeatherForecast.cs”文件移动到新建的类库“AllTestDemo.Model”下,修改命名空间并添加上注释,如下图所示。

                var xmlModelPath = Path.Combine(basePath, "AllTestDemo.Model.xml";
                c.IncludeXmlComments($"{xmlModelPath}", true;

重新编译项目后,按 F5 启动项目,这样 Model 注释就有了,前后对比效果如下图所示。

四、去掉 Swagger 警告提示

如果我们不想添加注释,又不想看到这个警告提示,可以这样做。

“重新生成解决方案”后,我们看到错误列表中“AllTestDemo”项目下的警告已经没有了,仍然能看到“AllTestDemo.Model”项目下的警告信息,如下图所示。

我们可按照上述同样的方法,对“AllTestDemo.Model”进行相同的处理即可。

五、忽略接口信息

1、不添加特性

为了展示效果,在 WeatherForecastController 中添加了一个 POST 访问类型的方法,代码如下所示。

        [HttpPost]
        public void Index(
        {
        }

此时 Swagger UI 显示结果如下图所示。

2、在 Action 上添加特性

3、在 Controller 上添加特性

按 F5 键项目启动后 Swagger UI 显示如下图所示,对比不添加特性的显示结果,我们发现没有接口信息展示。

-------------------------------本篇文章到此结束-------------------------------------

编程笔记 » 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(二)

赞同 (40) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽