zoukankan      html  css  js  c++  java
  • 003 在.Net Core 中使用 Swagger

    003 在.Net Core 中使用 Swagger

    引出问题

    有的时候我们编写了一个API项目,但是没有太多时间来编写接口文档,这个时候会增加与消费者(API)调用者的沟通成本,这个时候Swagger的使用就很有必要了.

    在Asp .Net Core Web API 中使用Swagger

    1. 在WebApi,所在的项目中,通过Nuget安装SwashBuckle.AspNetCore包,此包依赖如下包:

      • SwashBuckle.AspNetCore.Swagger
      • SwashBuckle.AspNetCore.SwaggerGen
      • SwashBuckle.AspNetCore.SwaggerUI
      • SwashBuckle.AspNetCore.ApiDescription.Server
    2. Startup.cs类的ConfigureServices方法中配置如下注入:

    services.AddSwaggerGen(options =>
    {
        options.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPI项目的含义名称", Version = "v1" });
        //添加中文注释
        var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
        var commentsFileName = typeof(Program).Assembly.GetName().Name + ".XML";
        var xmlPath = Path.Combine(basePath, commentsFileName);
    
        options.IncludeXmlComments(xmlPath);
    
        //添加Model类的注释
        var modelFileName = "Leisure.BabakuaiBus.DtoModels.xml";
        var modelXmlPath = Path.Combine(basePath, modelFileName);
        options.IncludeXmlComments(modelXmlPath);
    
        options.DocInclusionPredicate((docName, description) => true);
    });

    3.在Startup.cs类的Configure方法中,启用如下中间件:

    app.UseSwagger();  
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/swagger/v1/swagger.json", "CIT WebAPI v1");
    });

    到此在项目中应用Swagger的过程基本完成,是不是很简单,下面启动服务看效果:

    Swagger页面
    Swagger页面

    在接口中显示文档描述

    有的时候我们需要再Swagger文档中显示接口描述,那么我们应该怎么做呢?

    1. 我们在项目中首相需要给接口,以及实体类加上C#文档注释(必须要现有文档注释).
    2. 生成操作如下:
      • 我们在WebApi所在的项目中,在其属性中的生成页面中,勾选上XML文档即可.

    Swagger可以显示的接口文档
    Swagger可以显示的接口文档

    此处需要 注意 一点,如果我们也想让输入输出参数的文档注释也显示再Swagger中那么我们也需要将输入输出参数实体类所在的项目,也需要生成XML文档文件,并且我们需要将生成好的文档文件放到Asp .Net Core运行所在的目录中.

    在Swagger文档中过滤接口

    有的时候有的接口我们并不想将整个项目下的所有API接口都显示再Swagger文档中,暴露给消费者,那么我们应该怎么做呢?
    很简单,我们只需要再不想暴露出来的Action上加上特性[ApiExplorerSettings(IgnoreApi = true)]即可.

    示例代码:

    [HttpGet]
    [ApiExplorerSettings(IgnoreApi = true)]
    public ActionResult Index(string appKey , string userName ,string userPwd)
    {
    	//todo
    }
    

    参考文章地址: 在.NetCore WebApi中过滤Swagger文档显示接口方法

    使用Swagger的其它注意事项:

    方法名相同的报错
    方法名相同的报错

  • 相关阅读:
    jQuery $.each用法
    关于jQuery中的attr和data问题
    AngularJS入门基础PPT(附下载链接)
    依赖注入 | Dependency Injection
    ng事件中为变量的参数
    angularjs factory,service,provider 自定义服务的不同
    $digest already in progress
    理解Angular中的$apply()以及$digest()
    LeetCode 最长连续递增序列
    LeetCode 岛屿的最大面积
  • 原文地址:https://www.cnblogs.com/HelloZyjS/p/12817906.html
Copyright © 2011-2022 走看看