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

如何在Spring-Data-Rest中自定义Swagger-UI仅暴露实体的GET方法

只在Swagger中暴露Spring Data Rest实体的GET方法解决方案

嘿,这问题我熟!既然你用Spring Data Rest自动生成了实体的REST接口,又不想在Swagger里暴露POST/PUT/DELETE这些非必需方法,咱们直接修改Swagger的Docket配置就能搞定,完全不用额外写Controller或者Service~

核心思路

Spring Data Rest会基于你的Repository自动生成CRUD接口,Swagger默认会扫描所有这些接口。我们要做的就是在Swagger配置里过滤掉非GET请求的接口,如果需要的话还可以进一步限定只针对某个实体的路径。

修改后的Swagger配置类

下面是调整后的完整配置代码,你可以根据自己的需求选择不同的过滤粒度:

方式1:全局只暴露所有实体的GET方法

这个配置会把所有Spring Data Rest生成的接口里的GET方法都留在Swagger文档中,其他方法全部隐藏:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                // 自定义筛选逻辑:只保留支持GET方法的请求处理程序
                .apis(requestHandler -> 
                    requestHandler.requestMappingInfo()
                                  .getMethodsCondition()
                                  .getMethods()
                                  .contains(HttpMethod.GET)
                )
                // 匹配所有路径(你也可以根据需要缩小范围)
                .paths(PathSelectors.any())
                .build();
    }
}

方式2:只暴露指定实体的GET方法

如果你只想针对某一个实体(比如User实体,默认路径是/users)暴露GET方法,可以结合路径匹配来精准过滤:

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(requestHandler -> 
                    requestHandler.requestMappingInfo()
                                  .getMethodsCondition()
                                  .getMethods()
                                  .contains(HttpMethod.GET)
                )
                // 只匹配User实体的所有路径(替换成你的实体路径)
                .paths(PathSelectors.ant("/users/**"))
                .build();
    }
}

代码解释

  • apis(requestHandler -> ...):这里传入了一个自定义的断言逻辑,检查每个请求处理程序是否支持GET方法,不满足的就会被Swagger排除掉。
  • paths(PathSelectors.ant(...)):用来限定Swagger扫描的路径范围,如果你有多个实体,只想关注其中一个,就用这个来缩小范围。
  • 因为你没有自定义Controller/Service,所有接口都是Spring Data Rest自动生成的,这个配置可以精准过滤掉你不需要的非GET接口。

内容的提问来源于stack exchange,提问作者Rahul Raj Sonu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:16:56