【问题标题】:Vaadin blocks Swagger-UIVaadin 阻止 Swagger-UI
【发布时间】:2022-12-29 17:41:24
【问题描述】:

除了我的 Vaadin-Flow 应用程序之外,我还想大摇大摆地工作。 我目前使用 Vaadin 22.0.4 与 Spring-Boot 2.6.3 和 springdoc-openapi-ui 1.6.5。 Swagger-ui 应该在http://localhost:8080/swagger-ui 下可用,但它不是:

我猜它以某种方式被 vaadin 阻止了。 http://localhost:8080/v3/api-docs 或由 spring 创建的 Rest-Endpoints 之类的东西工作正常。

有没有办法允许 swagger 工作的特定路线?

到目前为止我尝试了什么:

  1. 使用 spring security 允许 swagger(扩展 WebSecurityConfigurerAdapter 并覆盖 configure)。下面链接的存储库中有一个尝试的示例。
  2. 在 application.properties 中使用 vaadin.urlMapping=/foo/* 更改来自 vaadin 的根映射。这有点管用……Swagger 在http://localhost:8080/swagger-ui 下可用,Vaadin UI 在http://localhost:8080/foo 下可用。我只是在寻找相反的方法。 Vaadin 应该在http://localhost:8080/ 下可用。但这表明招摇会奏效。
  3. 使用 Swagger 2
  4. springdoc.swagger-ui.path

    我还上传了一个普通的 Vaadin 项目,问题是可重现的: https://github.com/DerAzubi/swagger-test (测试应用程序只需启动主要功能)

    最后一次提交包含对默认 vaadin 启动器所做的所有更改。

【问题讨论】:

  • @TatuLund 感谢您的回答。看起来不像是同一个问题。当我将 Vaadin 映射到 /ui/* 时,swagger 将正常启动。在链接的问题中,它不会启动并因 js 错误而失败(例如,我可以使用 vaadin 14 重现它,但我使用的是 22.0.4)。任何其他解决方法/修复的想法?
  • 据我所知,如果不更改 Vaadin 的 URL 映射,目前还没有办法(或至少是简单的方法)让 Swagger 工作。不过,我开了一张票来启用它:github.com/vaadin/flow/issues/12949
  • 对,就是这样。我设置了网址
  • @TarekOraby 非常感谢。期待解决方案:)

标签: spring-boot swagger vaadin openapi vaadin-flow


【解决方案1】:

这在 Vaadin 23.3.0 中已修复,但不是全自动的。您可以定义要排除的路径,例如vaadin.excludeUrls=/swagger-ui/** 并且 Vaadin servlet 在映射到 /* 时不​​会处理这些内容

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2011-01-07
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    相关资源
    最近更新 更多