1

我正在尝试在我拥有的另一项服务上执行请求。我用来创建应用程序的指南是:

QUARKUS - 使用 REST 客户端

QUARKUS - CDI 参考

夸库斯 - 车间

我收到如下错误:

org.jboss.resteasy.spi.UnhandledException: java.lang.RuntimeException: Error injecting com.easy.ecomm.core.product.ProductClient com.easy.ecomm.core.cart.CartService.productClient

org.eclipse.microprofile.rest.client.RestClientDefinitionException: Parameters and variables don't match on interface com.easy.ecomm.core.product.ProductClient::findProductById

这是 ProductClient 类

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Path("products")
@RegisterRestClient(configKey = "products-api")
public interface ProductClient {

    @GET
    @Path("{id}")
    Product findProductById(String id);

}

这是服务层:

import org.eclipse.microprofile.rest.client.inject.RestClient;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

@ApplicationScoped
public class CartService {

    @Inject
    @RestClient
    ProductClient productClient;

    public void addItem(String cartId, String productId, Integer amount){
        // Code to find the cart on a queue.
        Product product = findProduct(productId);
        cart.getItems().add(new CartItem(amount, product));
    }

    private Product findProduct(String productId) {
        return productClient.findProductById(productId);
    }
}

application.properties

products-api/mp-rest/url=http://localhost:8060
products-api/mp-rest/scope=javax.inject.Singleton

依赖项与我们在指南中的依赖项quarkus-rest-client相同quarkus-rest-client-jackson

我已经尝试过的事情:

从 ConfigKey 中删除@RegisterRestClient并使用 上的完整路径application.properties,在我的 POM.xml 上添加 Jandex 插件,如此处所述

但仍然没有成功。每个更改都会给我相同的错误消息。

4

1 回答 1

5

您忘记用 注释路径变量@PathParam,这就是它无法实例化客户端的原因:

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
import javax.ws.rs.PathParam;

@Path("products")
@RegisterRestClient(configKey = "products-api")
public interface ProductClient {

    @GET
    @Path("{id}")
    Product findProductById(@PathParam("id") String id);

}
于 2021-03-08T21:18:25.477 回答