我正在尝试创建 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>
}
当我尝试运行此程序时,出现不满足的依赖项构建错误。我可以通过在其余客户端层中实现端点来解决此错误。我想知道是否有一种方法可以修复此错误,而无需向我的其余客户端添加(在我的情况下是无意义的)端点。我知道理想情况下我只需将端点放入其余客户端而不需要库层,但不幸的是,这不是该项目的结构方式。
我也在同一个地方。我想在我自己的外部库中定义端点本身,因为它可以在多个项目中轻松重用,并且只想扩展接口以进行特定于集成的调整。
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;
希望这有帮助。