0

I am running two different Payara Micro microservices in one cluster.

The issue I have is that when I try to access the OpenAPI URL of MyApp1 like http://mylink.com/myApp1/openapi it does not work. It actually works when I use URL http://mylink.com/openapi.

This becomes an issue when I want to see the API for the other microservice like http://mylink.com/myApp2/openapi which does not work.

Is there a way in Payara Micro of telling OpenAPI to use the application's context in it's path just like all the other URL in the application do?

4

1 回答 1

1

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

上下文 - 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 上,并且我不想为此使用专门的代理应用程序,因此我刚刚创建了一个简单的资源/控制器来为我代理这个特定请求。背后的杰出方法:

@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();
}
于 2020-08-17T15:29:05.033 回答