有没有办法在不添加任何额外端点的情况下将 Jakarta 端点的接口扩展为 Quarkus Rest 客户端?

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

我正在尝试创建 RestClient 接口并将其注入到我的 Quarkus 应用程序中。这个其余的客户端接口从外部库扩展了另一个接口,我的所有端点都配置在该外部库中。我使用的是 Quarkus 3,正在使用 quarkus-rest-client-reactive-jackson 库。

这是剩下的客户端

@Path("path/path")
@RegisterRestClient(configKey = "my-service")
public interface IMyRestService extends IServiceEndpoints {
}

这是外部接口

@Path("path/path")
public interface IServiceEndpoints{
    
    @POST
    @Path("")
    @Consumes({"text/plain"})
    @Produces({"text/plain"})
    String doAction(String description);

    <more endpoints>
}

当我尝试运行此程序时,出现不满足的依赖项构建错误。我可以通过在其余客户端层中实现端点来解决此错误。我想知道是否有一种方法可以修复此错误,而无需向我的其余客户端添加(在我的情况下是无意义的)端点。我知道理想情况下我只需将端点放入其余客户端而不需要库层,但不幸的是,这不是该项目的结构方式。

java quarkus quarkus-rest-client quarkus-reactive
1个回答
0
投票

我也在同一个地方。我想在我自己的外部库中定义端点本身,因为它可以在多个项目中轻松重用,并且只想扩展接口以进行特定于集成的调整。

import com.example.core.rest_client.EntityService;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

import java.util.Map;

@RegisterRestClient(configKey = "api")
public interface DefaultEntityService
        extends EntityService<Map<String, Object>> {}

我还遇到了不满足的依赖异常。问题是 Quarkus 运行时不知道 EntityService。所以我需要在 application.properties 中专门索引外部库。

quarkus.index-dependency.api.group-id=com.exmaple
quarkus.index-dependency.api.artifact-id=core 

之后我能够注入扩展的 Rest 服务并使用底层端点。

@RestClient
DefaultEntityService entityService;

希望这有帮助。

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