总体问题是我的 swagger-ui(现在是 OpenAPi)不会使用所有 api 端点呈现 swagger-ui 页面。 错误提示“未提供 API 定义”。
我用java编写的eclipse gradle项目使用Javalin作为web服务。 我们最近迁移到更新版本的 OpenApi(使用 OpenApiPlugin)。 但是,现在我在 eclipse 中运行的代码不会调用传入的 withDefinitionConfiguration BiConsumer。我所能想到的是 eclipse 在处理对 kotlin 编译的 OpenApiPlugin jar 的调用时存在一些错误。 有什么想法吗?
这是相关代码块:
app = Javalin.create(config -> {
config.registerPlugin(new OpenApiPlugin(openApiConfig ->
{
LOGGER.debug("###################### registerPlugin consumer called");
openApiConfig
.withDocumentationPath(PATH_PREFIX+DOC_PATH)
.withRoles(WebRole.ALL_ROLES)
.withDefinitionConfiguration((version, definitionConfiguration) ->
{
LOGGER.debug("###################### withDefinition BiConsumer (is this called? - not yet - why not?)");
definitionConfiguration
.withServer(openApiServer -> {
openApiServer.setUrl(SERVER_URL+PATH_PREFIX);
})
.withInfo(openApiInfo -> {
openApiInfo.setDescription("My Description");
openApiInfo.setVersion("1.1");
});
}
);
})
);
config.registerPlugin(new SwaggerPlugin(swaggerConfiguration -> {
swaggerConfiguration.setDocumentationPath(PATH_PREFIX+DOC_PATH);
swaggerConfiguration.setUiPath(PATH_PREFIX+SWAGGER_PATH);
}));
for (JsonSchemaResource generatedJsonSchema : new JsonSchemaLoader().loadGeneratedSchemes()) {
System.out.println(generatedJsonSchema.getName());
System.out.println(generatedJsonSchema.getContentAsString());
}
});
我找到了一个“解决方法”。 Intellij 能够成功加载并运行该项目。 我最终在后台运行 Intellij 并启动“远程调试”会话。 然后我将 eclipse 项目设置为连接到由 Intellij 创建的远程调试会话。 这肯定不是最佳解决方案,所以我希望 Eclipse 最终会出现另一个解决方案。 这个“答案”很简短,因为据我所知,人们对这个问题没有任何兴趣(一定比我最初想象的更晦涩)。
在“后台”使用 Intellij 的快速推理: 我已经使用 Eclipse 多年并且对它相当熟悉。 它是开源的并且非常强大。 我曾考虑过改用 Intellij,但由于单一问题而改用 IDE 似乎适得其反。 通过这个“解决方案”,我只需在后台运行 Intellij(不需要真正的交互)并继续使用开源强大的 eclipse。