Skip to content

Core Swagger

约 203 字小于 1 分钟

NET

2024-03-16

NetGet 下载 Swashbuckle.AspNetCore

  • 无版本
 public void ConfigureServices(IServiceCollection services)
        {
			//  ...
            services.AddSwaggerGen(s =>
            {
                s.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "My Api", Version = "v1" });
                string basepath = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                string xmlpath = Path.Combine(AppContext.BaseDirectory, basepath);
                s.IncludeXmlComments(xmlpath); //注入函数注释
            });
        }
   public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
        	app.UseSwagger();
            app.UseSwaggerUI(s => s.SwaggerEndpoint("/swagger/v1/swagger.json", "My Api v1"));
   		}
  • 多版本管理
using Microsoft.AspNetCore.Mvc.ApiExplorer;
using Microsoft.AspNetCore.Mvc.Versioning; 		


		private IApiVersionDescriptionProvider provider;
		public void ConfigureServices(IServiceCollection services)
 		{
     		services.AddApiVersioning(option =>
            {
                option.DefaultApiVersion = new ApiVersion(1, 0);
                option.ApiVersionReader = new HeaderApiVersionReader("api-version");
            })
            .AddVersionedApiExplorer(option =>
            {
                option.GroupNameFormat = "'v'VV";
                option.AssumeDefaultVersionWhenUnspecified = true;
            });

            this.provider = services.BuildServiceProvider().GetRequiredService<IApiVersionDescriptionProvider>();
            services.AddSwaggerGen(options =>
            {
                foreach (ApiVersionDescription desc in provider.ApiVersionDescriptions)
                {
                    options.SwaggerDoc(desc.GroupName,
                        new Microsoft.OpenApi.Models.OpenApiInfo
                        {
                            Version = desc.GroupName,
                            Title = "Ting Api",
                            Description = "接口说明文档",
                        });
                    string xmlpath = Path.Combine(AppContext.BaseDirectory, $"{Assembly.GetExecutingAssembly().GetName().Name}.xml");
                    options.IncludeXmlComments(xmlpath); //注入函数注释
                }
            });
            services.AddControllers();
		}

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

            app.UseSwagger();
            app.UseSwaggerUI(s =>
            {
                foreach (var desc in this.provider.ApiVersionDescriptions)
                {
                    s.SwaggerEndpoint($"/swagger/{desc.GroupName}/swagger.json", $"{desc.GroupName.ToUpperInvariant()}");
                }
            });