java OpeApiPlugin - 未提供 API 定义 - withDefinitionConfiguration BiConsumer 不会被调用

问题描述 投票:0回答:1

总体问题是我的 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());
        }
        
    });
java eclipse swagger openapi swagger-ui
1个回答
0
投票

我找到了一个“解决方法”。 Intellij 能够成功加载并运行该项目。 我最终在后台运行 Intellij 并启动“远程调试”会话。 然后我将 eclipse 项目设置为连接到由 Intellij 创建的远程调试会话。 这肯定不是最佳解决方案,所以我希望 Eclipse 最终会出现另一个解决方案。 这个“答案”很简短,因为据我所知,人们对这个问题没有任何兴趣(一定比我最初想象的更晦涩)。

在“后台”使用 Intellij 的快速推理: 我已经使用 Eclipse 多年并且对它相当熟悉。 它是开源的并且非常强大。 我曾考虑过改用 Intellij,但由于单一问题而改用 IDE 似乎适得其反。 通过这个“解决方案”,我只需在后台运行 Intellij(不需要真正的交互)并继续使用开源强大的 eclipse。

© www.soinside.com 2019 - 2024. All rights reserved.