如何为Swashbuckle API添加文本压缩?ASP.NET+IIS环境
Swashbuckle API响应GZIP压缩实现方案
Swashbuckle本身不直接提供响应压缩功能,但可以通过ASP.NET的内置机制或IIS配置,让Swagger相关的API响应和其他接口一样被GZIP压缩。以下分两种项目类型给出实现步骤:
ASP.NET Core 项目
- 配置响应压缩服务
在Program.cs中注册响应压缩服务,并添加Swagger专属的MIME类型:
builder.Services.AddResponseCompression(options => { options.EnableForHttps = true; // 包含默认支持的MIME类型,再追加Swagger相关类型 options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/vnd.swagger+json", "application/vnd.swagger.doc+json" }); });
- 启用响应压缩中间件
在Program.cs的中间件管道中,确保UseResponseCompression()在UseSwagger()和UseSwaggerUI()之前调用:
app.UseResponseCompression(); app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Your API V1"); });
ASP.NET Framework 项目(IIS托管)
由于你已经启用了IIS文本压缩,只需确保Swagger相关的MIME类型被纳入压缩范围:
- IIS管理器配置
- 打开IIS管理器,定位到你的站点,点击压缩功能
- 右侧操作栏选择编辑功能设置,勾选「启用静态内容压缩」和「启用动态内容压缩」
- 返回压缩界面,点击添加,新增以下MIME类型:
application/vnd.swagger+jsonapplication/json(若未添加)
- web.config 配置
在web.config的<system.webServer>节点下添加或更新压缩配置:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <dynamicTypes> <add mimeType="application/vnd.swagger+json" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="text/*" enabled="true" /> </dynamicTypes> <staticTypes> <add mimeType="application/vnd.swagger+json" enabled="true" /> <add mimeType="application/json" enabled="true" /> <add mimeType="text/*" enabled="true" /> </staticTypes> </httpCompression> <urlCompression doStaticCompression="true" doDynamicCompression="true" />
验证方法
打开浏览器开发者工具的「Network」标签,发起Swagger API请求,检查响应头是否包含Content-Encoding: gzip,同时请求头需存在Accept-Encoding: gzip, deflate(浏览器默认会发送)。
内容的提问来源于stack exchange,提问作者Skary
相关产品推荐
相关产品推荐

