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

如何从生成的OpenAPI文档中排除Spring Data REST仓库

解决Spring Data REST仓库从OpenAPI文档中排除的问题

这里有几种优雅的官方方案,可根据你的实际需求选择:

方案1:完全禁用仓库的REST端点(同时排除文档)

直接使用Spring Data REST自带的@RepositoryRestResource注解,将exported属性设为false。这样不仅会让该仓库从OpenAPI文档中消失,对应的REST端点也会被彻底关闭,是最简洁直接的方式:

@Repository
@RepositoryRestResource(exported = false)
public interface ExcludeMeRepository extends
        PagingAndSortingRepository<ExcludeMe, Integer> {}

方案2:保留REST端点但仅排除OpenAPI文档

如果需要保留该仓库的REST访问能力,只是不想让它出现在OpenAPI文档中,可以通过自定义OpenApiCustomizer过滤对应路径:

步骤1:实现自定义OpenApiCustomizer

import org.springdoc.core.customizers.OpenApiCustomizer;
import io.swagger.v3.oas.models.OpenAPI;
import org.springframework.stereotype.Component;

@Component
public class ExcludeRepositoryDocCustomizer implements OpenApiCustomizer {

    @Override
    public void customise(OpenAPI openApi) {
        // 替换为你的仓库对应的默认REST路径(通常是实体类名小写复数,比如excludeMes)
        String basePath = "/excludeMes";
        // 移除基础路径及相关子路径
        openApi.getPaths().remove(basePath);
        openApi.getPaths().remove(basePath + "/{id}");
        openApi.getPaths().remove(basePath + "/search");
    }
}

步骤2:自动生效

这个自定义组件会被springdoc自动识别加载,无需额外配置。

方案3:细粒度控制(自定义控制器+@Hidden)

如果需要对端点逻辑做自定义修改,同时排除文档,可以为该仓库创建自定义RepositoryRestController并添加@Hidden注解:

@Hidden
@RepositoryRestController
@RequestMapping("/excludeMes")
public class ExcludeMeCustomController {

    private final ExcludeMeRepository repository;

    public ExcludeMeCustomController(ExcludeMeRepository repository) {
        this.repository = repository;
    }

    // 按需重写需要保留的端点方法,未实现的方法会自动失效
}

这种方式适合需要定制端点逻辑的场景,但相对前两种稍显繁琐。


内容的提问来源于stack exchange,提问作者M. Justin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:30:58