You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swashbuckle/Swagger:如何用OperationFilter移除Get接口错误Body参数

解决Swagger为GET接口错误生成Body参数的问题

你的问题核心在于:错误生成的Body参数并不在operation.Parameters集合里,而是存储在operation.RequestBody属性中,所以之前的过滤器根本找不到要移除的目标。另外,接口上标注的[SwaggerConsumes("application/json")]是触发这个问题的诱因——GET请求通常不需要指定Consumes,这个属性会让Swagger误以为该接口接收请求体,从而生成多余的body参数。

正确的OperationFilter实现

修改过滤器,直接针对RequestBody处理,并且只对GET请求生效,避免影响POST/PUT等正常需要请求体的接口:

public class RemoveGetRequestBodyFilter : IOpenApiOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        // 判断当前接口是否为GET请求
        var isGetMethod = context.ApiDescription.HttpMethod.Equals("GET", StringComparison.OrdinalIgnoreCase);
        if (isGetMethod && operation.RequestBody != null)
        {
            // 移除GET请求的RequestBody
            operation.RequestBody = null;
        }
    }
}

注册过滤器

确保在Swagger配置中添加这个过滤器(通常在Program.cs里):

builder.Services.AddSwaggerGen(c =>
{
    // 其他Swagger配置项...
    c.OperationFilter<RemoveGetRequestBodyFilter>();
});

额外建议

如果业务上不需要,可以直接去掉接口上的[SwaggerConsumes("application/json")]属性,从根源上避免Swagger生成多余的body参数。

内容的提问来源于stack exchange,提问作者hewsim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:15:25