如何使用 Jersey 禁用 OpenAPI 规范中的 /application.wadl

发布于 2025-01-09 03:19:58 字数 1276 浏览 1 评论 0原文

设置

我使用 来自 Initializr 的 Spring Boot 应用程序包含 Jersey 依赖项,并添加 io.swagger.core.v3:swagger-jaxrs2:2.1.13 作为附加依赖项。然后,我创建以下 ResourceConfig(为简洁起见,省略了注册其他资源类):

@Component
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() {
        this.registerClasses(
                OpenApiResource.class
        );
    }
}

当我启动应用程序并在 http://localhost:8080/openapi.json 查看生成的 API 规范时,我发现两个路径

  • : >GET /application.wadl/{path} 和
  • GET /application.wadl

在 Swagger UI 中,它看起来像这样:

在此处输入图像描述

当我向 WADL 端点发送请求时,我得到此设置中的 404 响应。我已经尝试使用此行禁用 WADL 功能,但规范仍然包含两个路径:

this.property(ServerProperties.WADL_FEATURE_DISABLE, true);

问题

如何正确禁用或隐藏 OpenAPI 规范中的这两个路径?

Setup

I use a Spring Boot app from the Initializr with Jersey dependency included and add io.swagger.core.v3:swagger-jaxrs2:2.1.13 as an additional dependency. Then I create the following ResourceConfig (registering other resource classes omitted for brevity):

@Component
public class JerseyConfig extends ResourceConfig {
    public JerseyConfig() {
        this.registerClasses(
                OpenApiResource.class
        );
    }
}

When I start the application and have a look at the generated API spec at http://localhost:8080/openapi.json, I find two paths:

  • GET /application.wadl/{path} and
  • GET /application.wadl

In Swagger UI, it looks like this:

enter image description here

When I send a request to the WADL endpoint, I get a 404 response in this setup. I already tried to disable the WADL feature with this line, but the spec still contains the two paths:

this.property(ServerProperties.WADL_FEATURE_DISABLE, true);

Question

How do I disable or hide these two paths in the OpenAPI spec properly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故乡的云 2025-01-16 03:19:58

spring 文档不支持开箱即用的 jersey/JAX-RS。
您需要在 Jersey 资源配置中控制 openapi.json 生成逻辑。

OpenApiResource openApiResource = new OpenApiResource();
// change package name
openApiResource.setResourcePackages(Set.of("com.service.resource"));
// you can do a lot of configuration here
// https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Integration-and-Configuration#configuration-properties
register(openApiResource);

The spring doc doesn't support jersey/JAX-RS out of box.
You will need to control the openapi.json generation logic in Jersey resource configuration.

OpenApiResource openApiResource = new OpenApiResource();
// change package name
openApiResource.setResourcePackages(Set.of("com.service.resource"));
// you can do a lot of configuration here
// https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X---Integration-and-Configuration#configuration-properties
register(openApiResource);
半山落雨半山空 2025-01-16 03:19:58

也许你可以尝试 packages-to-scan 属性

springdoc:
   packages-to-scan:
    - com.myapp.appName.controller

May be you can try packages-to-scan property

springdoc:
   packages-to-scan:
    - com.myapp.appName.controller
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文