zoukankan      html  css  js  c++  java
  • ASP.NET CORE Swagger

    Package

    添加并配置Swagger中间件

    将Swagger生成器添加到方法中的服务集合中Startup.ConfigureServices

            public void ConfigureServices(IServiceCollection services)
            {
                services.AddMvc();
                services.AddSwaggerGen(c =>
                {
                    c.SwaggerDoc("v1", new Info { Title = "WoorldCup Api", Version = "v1" });
    
                    // Set the comments path for the Swagger JSON and UI.
                    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                    c.IncludeXmlComments(xmlPath);
                });
            }

     在该Startup.Configure方法中,启用用于为生成的JSON文档和Swagger UI提供服务的中间件:

            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseSwagger();
    
                app.UseSwaggerUI(c =>
                {
                    c.SwaggerEndpoint("/swagger/v1/swagger.json", "WoorldCup Api V1");
                });
    
                app.UseMvc();
            }

    Controller标记

    using Microsoft.AspNetCore.Hosting;
    using Microsoft.AspNetCore.Mvc;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using WorldCup.Data;
    
    namespace WorldCup.Controllers
    {
        /// <summary>
        /// 比赛相关
        /// </summary>
        [Route("api/[controller]")]
        public class MatchController : Controller
        {
            private readonly WorldCupDBContext _worldCupDb;
            private readonly IHostingEnvironment _hostingEnvironment;
            public MatchController(WorldCupDBContext worldCupDb)
            {
                _worldCupDb = worldCupDb;
            }
            /// <summary>
            /// 获取所有队伍
            /// </summary>
            /// <returns></returns>
            [HttpGet("GetAllTeam")]
            public IActionResult GetAllTeam(TodoItem item)
            {
                return Ok(new
                {
                    Result = _worldCupDb.WorldCup_Country.ToList()
                });
            }
        }
    
        public class TodoItem
        {
            public long Id { get; set; }
    
            [Required]
            public string Name { get; set; }
    
            [DefaultValue(false)]
            public bool IsComplete { get; set; }
        }
    }

    效果

    文档分组

                services.AddSwaggerGen(c =>
                {
                    c.SwaggerDoc("v1", new Info { Title = "登录", Version = "v1" });
                    c.SwaggerDoc("v2", new Info { Title = "题目答案", Version = "v1" });
                    c.SwaggerDoc("v3", new Info { Title = "KPI", Version = "v1" });
                    var basePath = Microsoft.Extensions.PlatformAbstractions.PlatformServices.Default.Application.ApplicationBasePath;
                    var xmlPath = System.IO.Path.Combine(basePath, $"{nameof(CMBCampaign)}.xml");
                    c.IncludeXmlComments(xmlPath, true);
    
                    //添加header验证信息
                    var security = new Dictionary<string, IEnumerable<string>> { { "Bearer", new string[] { } } };
                    //添加一个必须的全局安全信息,和AddSecurityDefinition方法指定的方案名称要一直,这里是Bearer;
                    c.AddSecurityRequirement(security);
                    c.AddSecurityDefinition("Bearer", new ApiKeyScheme()
                    {
                        Description = "JWT授权(数据将在请求头中进行传输) 参数结构:"Authorization:Bearer {token}"",
                        Name =  SystemGlobalConst.Token,// jwt默认的参数名称 "Authorization",//
                        In = "header",//jwt默认存放Authorization信息的位置(请求头中)
                        Type = "apiKey"
                    });
                });
         if (Configuration.GetSection("ShowSwagger").Value == "true")
                {
                    app.UseSwagger().UseSwaggerUI(c =>
                    {
                        c.SwaggerEndpoint("/swagger/v1/swagger.json", "登录");
                        c.SwaggerEndpoint("/swagger/v2/swagger.json", "题目答案");
                        c.SwaggerEndpoint("/swagger/v3/swagger.json", "KPI");
                    });
                }

    微软文档:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/web-api-help-pages-using-swagger?view=aspnetcore-2.1

  • 相关阅读:
    PAT Basic 1001
    PAT基础6-11
    PAT基础6-12
    PAT基础6-10
    修改正在进行遍历的列表
    使用管道和cronolog切割日志
    python logging模块
    python实现广度优先搜索和深度优先搜索
    多继承下的super()指向的不一定是直接父类
    python3 pandas DataFrame常见用法
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/9134715.html
Copyright © 2011-2022 走看看