swagger - 如何告诉 OpenAPI 在其 URL 中使用应用程序的上下文根

标签 swagger openapi aws-fargate payara payara-micro

我在一个集群中运行两个不同的 Payara Micro 微服务。

我遇到的问题是,当我尝试访问 MyApp1 的 OpenAPI URL(如 http://mylink.com/myApp1/openapi)时这是行不通的。当我使用 URL http://mylink.com/openapi 时它实际上有效。

当我想查看其他微服务(例如 http://mylink.com/myApp2/openapi)的 API 时,这会成为一个问题这是行不通的。

Payara Micro 是否有办法告诉 OpenAPI 在其路径中使用应用程序的上下文,就像应用程序中的所有其他 URL 一样?

最佳答案

正如您在我之前的评论中看到的,我也遇到过同样的情况。

上下文 - openapi 和 microprofile

首先我要说的是,根目录中包含/openapi URL 是 microprofile-open 的预期行为。文档始终使用/openapi路径作为获取文档的权限LINK

在实现中,很明显这种行为是强制执行的: 在OpenApi的ServletContainerInitializer中可以看到以下代码

  // Only deploy to app root
    if (!"".equals(ctx.getContextPath())) {
        return;
    }

解决方法又名解决方案

现在很明显,我们无法对此进行配置,因为这是预期的行为,一种解决方案(我建议的解决方案)是将/YOUR_APP/openapi 的请求代理到/openapi。 由于我的应用程序是 jax-rs 应用程序,部署在 openshift 上,并且我不想为此拥有专用的代理应用程序,因此我刚刚创建了一个简单的资源/ Controller 来为我代理此特定请求。 背后的出色方法:

@GET
@Path("")
public Response proxyOpenApiCall(){
    log.debug("proxyOpenApiCall called");
    String entity = client.target("http://localhost:8080")
            .path("openapi").request()
            .get(String.class);

    return Response.ok(entity).build();
}

关于swagger - 如何告诉 OpenAPI 在其 URL 中使用应用程序的上下文根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60869968/

相关文章:

java - 将 Swagger Basic AUTH 添加到 Spring Boot 应用程序

python swagger客户端设置主机和端口

发布到 Marketplace 的 Azure 托管应用程序无法向自定义提供程序发出 POST 请求(由于 swagger 被阻止?)

spring - 如何修复 springfox 中的 "Security scope definition global could not be resolved"?

time - org.joda.LocalTime 在 Swagger 中的表示

python - 如何使用 FastAPI 在 Swagger UI 中显示来自 HTMLResponse 的实际 HTML 页面?

amazon-web-services - AWS API Gateway 与 SNS 集成的工作示例,包括 MessageAttributes

amazon-web-services - Fargate 的公共(public) IP 上的 HTTPS - 这可能吗?

amazon-web-services - AWS ECS Fargate 容器运行状况检查命令

aws-fargate - 资源初始化错误 : failed to validate logger args: : signal: killed