尝试在 Quarkus 中进行 REST 调用时出错
Error when trying to make a REST Call in Quarkus
我正在尝试在我拥有的另一项服务上执行请求。
我用来创建应用程序的指南是:
QUARKUS - Using the REST Client
我收到如下错误:
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
这是 class 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
上的依赖项相同
我已经尝试过的事情:
从 @RegisterRestClient
中删除 ConfigKey 并使用 application.properties
上的完整路径,按照 .[=23] 中所述在我的 POM.xml 上添加 Jandex 插件=]
但是还是没有成功。每次更改都会给我相同的错误消息。
您忘记使用 @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);
}
我正在尝试在我拥有的另一项服务上执行请求。 我用来创建应用程序的指南是:
QUARKUS - Using the REST Client
我收到如下错误:
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
这是 class 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
我已经尝试过的事情:
从 但是还是没有成功。每次更改都会给我相同的错误消息。@RegisterRestClient
中删除 ConfigKey 并使用 application.properties
上的完整路径,按照
您忘记使用 @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);
}