如何访问 WildFly 18+ 中的 OpenApi 端点?

How do I access the OpenApi endpoint in WildFly 18+?

我有一个带有 MicroProfile OpenApi 注释的 war。当我在 Payara 或 OpenLiberty 上 运行 时,我可以在 http://localhost:8080/openapi 访问 OpenApi 文档,如规范中所指定。

这不适用于 WildFly 18 和 19 Beta 1,尽管它声称支持 MP OpenApi。我想 TCK 会对此进行检查,所以也许我做错了什么。

看来 WildFly 19 Beta 1 添加了 OpenAPI 支持。不幸的是,wildfly.org 页面上的当前文档是针对 WildFly 18 的,不包括包含 OpenAPI 的管理指南。

不过,您可以找到 OpenAPI 支持 on GitHub.adoc 文件。根据此文件的历史记录,它是在 2019 年 12 月添加的(这也许就是我尚未进入主页文档的原因)。

OpenAPI 的当前文档声称是默认 standalone-microprofile.xml 配置的一部分,该文档可在 http://localhost:8080 获得。

如果您不运行使用此配置,您可以使用以下命令启用 OpenAPI 子系统(我使用 WildFly 19 Beta 1 测试过):

➜  bin ./jboss-cli.sh 
You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands.
[disconnected /] connect
[standalone@localhost:9990 /] /extension=org.wildfly.extension.microprofile.openapi-smallrye:add()
{"outcome" => "success"}

[standalone@localhost:9990 /] /subsystem=microprofile-openapi-smallrye:add()
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}

[standalone@localhost:9990 /] 

请注意:如果您随后尝试在浏览器中通过 http://localhost:8080/openapi 访问它,您可能会收到 406 - 不可接受。只需请求正确的内容类型或使用 cURL:

curl -v http://localhost:8080/openapi // YAML output
curl -v http://localhost:8080/openapi?format=JSON  // JSON output