Пример #1
0
        public void Configure(SwaggerGenOptions options)
        {
            options.TagActionsBy(api =>
            {
                if (api.ActionDescriptor is ControllerActionDescriptor controllerActionDescriptor)
                {
                    return(new[] { controllerActionDescriptor.ControllerName });
                }

                if (api.HttpMethod != null)
                {
                    return(new[] { api.HttpMethod });
                }

                throw new InvalidOperationException("Unable to determine tag for endpoint.");
            });

            options.OrderActionsBy((apiDesc) => $"{apiDesc.ActionDescriptor.RouteValues["controller"]}_{apiDesc.HttpMethod}");
            options.IgnoreObsoleteActions();
            options.IgnoreObsoleteProperties();
            options.DefaultResponseForSecuredOperations();
            options.TreatBadRequestAsDefaultResponse();

            if (!restApiOptions.AllowAnonymousAccessForDevelopment)
            {
                options.OperationFilter <SecurityRequirementsOperationFilter>();
            }

            options.DocumentFilter <SwaggerEnumDescriptionsDocumentFilter>();

            if (restApiOptions.UseApiVersioning)
            {
                options.ApplyApiVersioningFilters();

                foreach (var description in versionDescriptionProvider.ApiVersionDescriptions)
                {
                    try
                    {
                        options.SwaggerDoc(
                            description.GroupName,
                            new OpenApiInfo
                        {
                            Title   = Assembly.GetEntryAssembly() !.GetApiName(),
                            Version = description.ApiVersion.ToString(),
                        });
                    }