.Net Core 添加 Swagger 支持

1. NuGet  中添加 Swashbuckle.AspNetCore

2.添加 Startup 信息

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

//注册Swagger生成器,定义一个和多个Swagger 文档
services.AddSwaggerGen(c =>
{
     c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});

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

//启用中间件服务生成Swagger作为JSON终结点
app.UseSwagger();
//启用中间件服务对swagger-ui,指定Swagger JSON终结点
app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});

3.调试默认页

4.xml 注释信息  1591 忽略注释警告,xml 在bin 目录下,xml名与项目名相同。

5.添加特定参数,(query header body path formData)各个 报文都可以配, 功能强大。

 新建 class  实现 配置类 IOperationFilter

public class SwaggerHeaderOperation : IOperationFilter
    {
        /// <summary>
        ///
        /// </summary>
        /// <param name="operation"></param>
        /// <param name="context"></param>
        public void Apply(Operation operation, OperationFilterContext context)
        {
            if (operation.Parameters == null) operation.Parameters = new List<IParameter>();
            var attrs = context.ApiDescription.ActionDescriptor.AttributeRouteInfo;

//先判断是否是匿名访问,
            var descriptor = context.ApiDescription.ActionDescriptor as ControllerActionDescriptor;
            if (descriptor != null)
            {
                var actionAttributes = descriptor.MethodInfo.GetCustomAttributes(inherit: true);
                bool isAnonymous = actionAttributes.Any(a => a is AllowAnonymousAttribute);
                //非匿名的方法,链接中添加accesstoken值
                if (!isAnonymous)
                {
                    operation.Parameters.Add(new NonBodyParameter()
                    {
                        Name = "accesstoken",
                        In = "header",//query header body path formData
                        Type = "string",
                        Required = false //是否必选
                    });
                }
            }
        }
 
    }

  在 中添加   IServiceCollection.OperationFilter<SwaggerHeaderOperation>();

Startup 最终配置:

public void ConfigureServices(IServiceCollection services)
        {
           
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            //全局配置Json序列化处理
            services.AddMvc()
                .AddJsonOptions(options =>
                {
                    //忽略循环引用
                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                    //不使用驼峰样式的key
                    //options.SerializerSettings.ContractResolver = new LowercaseContractResolver();
                    //设置时间格式
                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
                }
           );

services.AddSwaggerGen(c =>
            { // 为 Swagger JSON and UI设置xml文档注释路径
                var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);//获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径)
                var xmlPath = Path.Combine(basePath, "AsnycCoreAPI.xml");
                c.IncludeXmlComments(xmlPath);
                c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
                c.OperationFilter<SwaggerHeaderOperation>();
            });

}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseMvc();

//启用中间件服务生成Swagger作为JSON终结点
            app.UseSwagger();
            //启用中间件服务对swagger-ui,指定Swagger JSON终结点
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });

}

最后祝大家 国庆节愉快。

原文地址:https://www.cnblogs.com/j2ee-web-01/p/11599635.html

时间: 2024-08-19 04:11:17

.Net Core 添加 Swagger 支持的相关文章

插上腾飞的翅膀:为asp.net core添加protobuf支持

没时间解释了,快上车. 通过NuGet获取Zaabee.AspNetCoreProtobuf Install-Package Zaabee.AspNetCoreProtobuf 在Startup.cs文件中修改ConfigureServices方法 public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.AddProtobufSupport(); }); }

ASP.NET CORE API Swagger+IdentityServer4授权验证

简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置IdentityServer4服务端 首先创建一个新的ASP.NET Core项目. 这里选择空白项,新建空白项目 等待创建完成后,右键单击项目中的依赖项选择管理NuGet程序包,搜索IdentityServer4并安装: 等待安装完成后,下载官方提供的UI文件,并拖放到项目中.下载地址:https:/

XUtils BitmapUtils 改造以添加drawable支持

=== XUtilsBitmapUtils 改造以添加drawable支持 === # XUtils 简介 XUtils 是一套少有的早期国产安卓框架, 其源于AFinal, 目录结构也与之相似, 但是代码却进行了大量的重构, 是XUtils更加现代, 解决了AFinal 的OOM等问题. 目前 XUtils 已经支持 API 8(android 2.2) 至 API 21(android 5.0.x). XUtils 主要内置了DbUtils 模块, ViewUtils 模块, HttpUti

我的Opencv4Android添加V4L2支持的移植记录(3)

博主QQ:1356438802 本文实验平台:Eclipse + Opencv 2.4.10 + MTK Android 4.4平板(这一直是我的Android实验平台) 可能各位看官,看到前面的文章会觉得很凌乱,一会儿这个平台,一会儿那个平台. 其实我的主要思路就是:opencv中的任何一个功能,首先在windows上验证成功,再到Ubuntu,然后到Android上验证! 在windows上,由于其系统通用性,各方面支持肯定更好,所以我一定能验证成功,然后我再去Android上面做这些功能.

.NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结

.NET Core 多框架支持(net45+netstandard20)实践中遇到的一些问题总结 前言 本文主要是关于.NET Standard 代码 在多框架 和 多平台 支持自己实践过程中遇到的一些问题和解决办法,希望给遇到这些问题的同学一点参考和思路.问题基本上都是提在 博问 和 Stackoverflow 中,不乏很多大佬都提供了解决问题的思路.接下来则是正文. 问题1:如何发布多个 TargetFramework 的nuget 包 问题来源 :主要是因为之前的类库只提供了 .NET S

NetCoreAPI添加Swagger

public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public vo

为UiAutomatorViewer添加xpath支持

UiAutomatorViewer是Android SDK自带的测试工具,用来查看手机或模拟器上的界面元素,小巧,简单,开箱即用,十分方便.美中不足之处在于,它不能获取界面元素的xpath. 写自动化测试脚本时,xpath是一种非常方便的定位方式.Appium等一些成熟的工具框架可以获取到界面元素xpath,但使用起来稍有点重量级.那么是否也可以给UiAutomatorViewer添加xpath支持呢? 答案是肯定的. 首先下载UiAutomatorView源代码,我用的地址是https://a

为Gradle添加UTF-8支持

gradle默认使用系统字符编码,大多数中文系统是使用GBK编码 但程序员绝大部分都是使用UTF-8写各类java文件以及其他资源文件 编译时很容易报错,比如下面的错误: ”警告:编码 GBK 的不可映射字符“ 有两种办法可以给gradle添加UTF-8支持 第一种,在我们的项目配置文件build.gradle中最后添加下面的语句 tasks.withType(JavaCompile) { options.encoding = "UTF-8" } 这样,这个项目在进行gradle打包时

为UIAlertView添加block支持

系统自带的UIAlertView只能支持delegate方式. 如果你只有一个UIAlertView这种方式可能无关紧要. 但如果你有二个或多个UIAlertView, 你需要在委托方法中进行判断是哪个UIAlertView实例的产生的委托, 接着又要判断是响应哪个button. 如果你曾经这样做过, 想想这是多杂的代码. Objective-C是支持块代码的, 如果对UIAlertView添加块支持, 那岂不是一个美事. 这里推荐一个开源的实现: https://github.com/jiv