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

如何使用org.eclipse.microprofile.openapi隐藏接口路径/服务?

解决Quarkus中JAX-RS服务无法从OpenAPI文档隐藏的问题

问题根源

@Schema(hidden = true)注解的作用是隐藏数据模型(Schema),比如DTO类,而非API端点或整个JAX-RS资源类。你把它用在类或方法上,自然不会影响路径的显示。

正确的隐藏方式

针对Quarkus 3.12.3 + MicroProfile OpenAPI 3.1.1的环境,有两种可靠方案:

1. 使用@Hidden注解(推荐)

MicroProfile OpenAPI提供了专门的@Hidden注解,用于隐藏整个资源类或单个端点:

  • 隐藏整个JAX-RS类:
import org.eclipse.microprofile.openapi.annotations.Hidden;
import jakarta.ws.rs.Path;

@Hidden
@Path("/internal-service")
public class InternalService {
    // 类内所有端点都会被隐藏
}
  • 隐藏单个方法:
import org.eclipse.microprofile.openapi.annotations.Hidden;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

@Path("/public-service")
public class PublicService {
    @GET
    @Path("/public-endpoint")
    public String publicEndpoint() {
        return "public content";
    }

    @Hidden
    @GET
    @Path("/internal-endpoint")
    public String internalEndpoint() {
        return "internal content";
    }
}

2. 通过配置文件批量过滤

如果需要批量隐藏符合特定路径规则的端点,可在application.properties中添加规则:

# 隐藏所有以/internal开头的路径
quarkus.smallrye-openapi.filter.paths.exclude=/internal/*

# 或者只保留特定路径,其余全部隐藏
quarkus.smallrye-openapi.filter.paths.include=/public/*

这种方式适合批量配置场景,基于路径匹配生效。

验证

修改后重启Quarkus应用,访问Swagger UI(默认路径/q/swagger-ui)或直接查看OpenAPI文档(/q/openapi),确认目标服务已被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:24:52