public static IServiceCollection AddSwaggerSetup(this IServiceCollection services,
                                                         SwaggerConfig swaggerConfig = null)
        {
            swaggerConfig ??= new SwaggerConfig();

            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Version     = swaggerConfig.Version,
                    Title       = swaggerConfig.Title,
                    Description = swaggerConfig.Description,
                    Contact     = new OpenApiContact
                    {
                        Name = swaggerConfig.ContactName, Email = swaggerConfig.ContactEmail,
                        Url  = new Uri(swaggerConfig.ContactUrl)
                    },
                    License = new OpenApiLicense
                    {
                        Name = swaggerConfig.LicenseName, Url = new Uri(swaggerConfig.LicenseUrl)
                    }
                });

                c.OrderActionsBy(o => o.RelativePath);

                //var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";

                /* var xmlPath = Path.Combine(AppContext.BaseDirectory, "Blog.API.xml");//这个就是刚刚配置的xml文件名
                 * c.IncludeXmlComments(xmlPath, true);//默认的第二个参数是false,这个是controller的注释,记得修改
                 *
                 * xmlPath = Path.Combine(AppContext.BaseDirectory, "Blog.Model.xml");//这个就是刚刚配置的xml文件名
                 * c.IncludeXmlComments(xmlPath, true);//默认的第二个参数是false,这个是controller的注释,记得修改*/

                var comments = Directory.GetFiles(AppContext.BaseDirectory, "*.Swagger.xml");
                foreach (var comment in comments)
                {
                    c.IncludeXmlComments(comment, true);
                }

                c.OperationFilter <AddResponseHeadersFilter>();
                c.OperationFilter <AppendAuthorizeToSummaryOperationFilter>();

                c.OperationFilter <SecurityRequirementsOperationFilter>();

                c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
                {
                    Description = "JWT授权(数据将在请求头中进行传输) 直接在下框中输入Bearer {token}(注意两者之间是一个空格)\"",
                    Name        = "Authorization",          //jwt默认的参数名称
                    In          = ParameterLocation.Header, //jwt默认存放Authorization信息的位置(请求头中)
                    Type        = SecuritySchemeType.ApiKey
                });
            });

            return(services);
        }
Пример #2
0
        public static IApplicationBuilder UseSwaggerMiddlewares(this IApplicationBuilder app, SwaggerConfig swaggerConfig = null)
        {
            swaggerConfig ??= new SwaggerConfig();

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint($"/swagger/{swaggerConfig.Version}/swagger.json", swaggerConfig.Title);

                c.RoutePrefix = "";

                var types = typeof(ConfigureMiddlewares);

                var streamHtml = types.Assembly.GetManifestResourceStream($"{types.Namespace}.index.html");

                c.IndexStream = () => streamHtml;
            });

            return(app);
        }