四、ABP 学习系列 - 配置Swagger

一、再XX.Web项目中用Nuget安装Swashbuckle.AspNetCore.SwaggerGen和Swashbuckle.AspNetCore.SwaggerUI

二、在Startup.cs中添加如下代码

public class Startup
    {
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
          
            services.AddMvc(options =>
            {
                options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
            });


            //// Configure CORS for angular2 UI
            //services.AddCors(
            //    options => options.AddPolicy(
            //        _defaultCorsPolicyName,
            //        builder => builder
            //            .WithOrigins(
            //                // App:CorsOrigins in appsettings.json can contain more than one address separated by comma.
            //                _appConfiguration["App:CorsOrigins"]
            //                    .Split(",", StringSplitOptions.RemoveEmptyEntries)
            //                    .Select(o => o.RemovePostFix("/"))
            //                    .ToArray()
            //            )
            //            .AllowAnyHeader()
            //            .AllowAnyMethod()
            //    )
            //);

            // Swagger - Enable this line and the related lines in Configure method to enable swagger UI
            services.AddSwaggerGen(options =>
            {
                options.SwaggerDoc("v1", new Info { Title = "M API", Version = "v1" });
                options.DescribeAllEnumsAsStrings();                                        //Enum转字符串
                options.DescribeAllParametersInCamelCase();                                 //开启驼峰规则
                options.DocInclusionPredicate((docName, description) => true);              //显示备注
                options.IncludeXmlComments(GetXmlCommentsPath("XX.Web"));                  // 注意:此处替换成所生成的XML documentation的文件名。
                options.IncludeXmlComments(GetXmlCommentsPath("XX.Application"));          // 注意:此处替换成所生成的XML documentation的文件名。
                // Define the BearerAuth scheme that's in use
                options.AddSecurityDefinition("bearerAuth", new ApiKeyScheme()
                {
                    Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
                    Name = "Authorization",
                    In = "header",
                    Type = "apiKey"
                });
                // Assign scope requirements to operations based on AuthorizeAttribute
                options.OperationFilter<SecurityRequirementsOperationFilter>();
            });

        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
        {

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });


            // Enable middleware to serve generated Swagger as a JSON endpoint
            app.UseSwagger();
            // Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.)
            app.UseSwaggerUI(options =>
            {
                options.InjectOnCompleteJavaScript("/swagger/ui/abp.js");
                options.InjectOnCompleteJavaScript("/swagger/ui/on-complete.js");
                options.SwaggerEndpoint("/swagger/v1/swagger.json", "M API V1");
            }); // URL: /swagger
        }

        /// <summary>
        /// 获取帮助文件路径
        /// </summary>
        /// <param name="name">文件名</param>
        /// <returns></returns>
        protected string GetXmlCommentsPath(string name)
        {
            return string.Format(@"{0}\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
        }
    }

 

posted @ 2018-01-04 23:19  昨日微风  阅读(2066)  评论(2编辑  收藏  举报