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

在Quarkus中如何为OpenAPI标记JAX-RS资源方法为已弃用?

在Quarkus中为JAX-RS资源方法标记OpenAPI弃用状态

我之前也踩过这个坑——Java自带的@Deprecated注解是给Java生态(编译器、IDE)用的,MicroProfile OpenAPI默认不会把它映射到OpenAPI规范里的deprecated字段。要实现你想要的效果,得用MicroProfile OpenAPI提供的专属注解来处理,下面是两种靠谱的方法:

方法一:使用@Operation注解直接标记

这是最直接的方式,给目标JAX-RS资源方法添加@Operation注解,并设置deprecated = true属性。示例代码如下:

import org.eclipse.microprofile.openapi.annotations.Operation;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/sample")
public class SampleResource {

    @GET
    @Operation(
        summary = "获取示例数据",
        description = "这个接口已经不再推荐使用,请使用新的/v2/sample接口",
        deprecated = true
    )
    public String getSampleData() {
        return "legacy data";
    }
}

添加这个注解后,生成的OpenAPI JSON中对应的get方法就会自动带上"deprecated": true的标记,完全符合你的需求。

方法二:通过静态OpenAPI文件补充(适合批量配置)

如果你的项目里有多个接口需要标记弃用,或者想统一管理OpenAPI文档,也可以通过静态的openapi.yaml或openapi.json文件来配置。在src/main/resources/META-INF目录下创建文件,然后补充对应的弃用配置:

openapi: 3.0.3
paths:
  /sample:
    get:
      summary: "获取示例数据"
      deprecated: true
      responses:
        '200':
          description: "成功返回数据"
          content:
            text/plain:
              schema:
                type: string

不过这种方式需要注意和代码注解的兼容性,Quarkus会合并静态文件和代码注解生成最终的OpenAPI文档。

前置条件:确保依赖正确

别忘了在你的pom.xml(Maven)或build.gradle(Gradle)中添加Quarkus的OpenAPI扩展依赖,否则相关注解不会生效:

<!-- Maven 依赖 -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>

启动应用后,访问/q/openapi端点就能看到生成的OpenAPI文档,里面对应的接口已经标记为弃用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:40:49