如何在Quarkus中使用反应性路由启用swagger iu?

时间:2020-08-03 11:02:08

标签: swagger swagger-ui vert.x openapi quarkus

我正在使用Quarkus来构建项目,所以我决定使用Reactive Routes

我想将OpenAPI信息和Swagger UI添加到我的项目中。似乎可以使用RestEasy来实现,但是我没有找到有关反应式路由的信息。

有可能吗?我尝试启用它,但无法。

2 个答案:

答案 0 :(得分:1)

这是不可能的。

RESTeasy方法依靠反射和注释的组合来确定REST接口是什么。 使用Vert.x Web路由时,您具有更大的灵活性,即该信息级别无法以标准方式获得。

有两种选择:

如果需要生成OpenApi文档,我个人使用RESTeasy。

答案 1 :(得分:1)

现在可用,请在这里https://quarkus.io/blog/openapi-for-everyone/#vert-x-reactive-routes中查看更多详细信息

示例:

use Symfony\Component\Process\Process;

(new Process(['npm', 'run', 'production'], base_path()))
    ->setTimeout(null)
    ->run(function ($type, $output) {
        $this->output->write($output);
    });

将生成:

@ApplicationScoped
@RouteBase(path = "/vertx", produces = "application/json")
@Tag(name = "Vert.x Resource", description = "Basic Hello World using Vert.x")
public class VertxGreeting {

    @Route(path = "/hello", methods = HttpMethod.GET)
    public Greeting helloVertX() {
        return new Greeting("Hello", "Vert.x");
    }

    @Route(path = "/hello", methods = HttpMethod.POST)
    public Greeting newHelloVertX(@Body Greeting greeting) {
        return greeting;
    }

    @Route(path = "/hello/:message", methods = HttpMethod.DELETE)
    public void deleteHelloVertX(@Param("message") String message) {
        // Here do the delete...
    }
}

您需要在pom中包含openapi扩展。