标签: quarkus-rest-client

在 quarkus Resteasy 中记录 HTTP 请求和响应

我在使用 Quarkus 中的 REST 客户端(使用 org.eclipse.microprofile.rest.client.RestClientBuilder 构建)调用服务器上的 REST 端点时遇到问题。我非常想通过将 HTTP 请求和响应写入日志来调试服务,这样我就可以看到实际发送到服务器的内容。然而,我一直未能找到针对该特定问题的指南。我设法构建了一个日志过滤器,但只记录了 URL 和实体 toString 值,这与发送的 HTTP 请求和响应完全不同。请帮助我找到记录实际 HTTP 请求和响应的解决方案。

httprequest quarkus quarkus-rest-client

19
推荐指数
2
解决办法
2万
查看次数

如何根据给定的 openapi 3.0.3 yaml 文件生成 Quarkus Rest JX-RS 服务

目前我正在使用 quarkus 开发一个应用程序。我有一个描述一切的 openapi yaml 文件。我想知道是否有 quarkus 扩展或工具可以用来生成可以生成和使用相同文件格式的其余端点。

yaml openapi openapi-generator quarkus quarkus-rest-client

13
推荐指数
3
解决办法
8049
查看次数

我可以在我的测试类中覆盖 quarkus application.properties 值吗?

我在 quarkus application.properties 中配置了一个值

skipvaluecheck=true
Run Code Online (Sandbox Code Playgroud)

现在,每当我想要执行测试时,我都希望将此值设置为 false 而不是 true。但我不想更改application.properties,因为它会影响最新的应用程序部署。我只是希望我的测试以 false 值执行,以便我的测试覆盖范围在声纳中变为绿色。

从java代码中,我通过下面的操作获取这个值

ConfigProvider.getConfig().getValue("skipvaluecheck", Boolean.class);
Run Code Online (Sandbox Code Playgroud)

Sprint boot 中已经存在类似的东西,我很好奇 quarkus 中是否也存在这样的东西

覆盖 Junit Test 中的默认 Spring-Boot application.properties 设置

junit application.properties quarkus quarkus-rest-client

13
推荐指数
1
解决办法
1万
查看次数

创建 kubernetes 部署时 Quarkus RestClient 属性的 env 值无效

按照 Quarkus Rest Client 教程,我需要在 application.properties 文件中添加类似的内容:

country-api/mp-rest/url=https://restcountries.eu/rest

使用 Docker 它可以工作,我可以通过参数传递属性值:

docker run -it --privileged --rm --env country-api/mp-rest/url="https://restcountries.eu/rest" mydockerhost/my-project:SNAPSHOT

Kubernetes 的 YAML 文件如下所示:

apiVersion: "apps/v1"
kind: "Deployment"
metadata:
  labels:
    app.kubernetes.io/name: "my-project"
    app.kubernetes.io/version: "SNAPSHOT"
  name: "my-project-deployment"
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: "my-project"
      app.kubernetes.io/version: "SNAPSHOT"
  template:
    metadata:
      labels:
        app.kubernetes.io/name: "my-project"
        app.kubernetes.io/version: "SNAPSHOT"
    spec:
      containers:
      - env:
        - name: "country-api/mp-rest/url"
          value: "https://restcountries.eu/rest"
Run Code Online (Sandbox Code Playgroud)

但执行命令时出现如下错误kubectl apply -f my-projetc.yaml

The Deployment "my-project-deployment" is invalid: * spec.template.spec.containers[0].env[1].name: Invalid value: "country-api/mp-rest/url": a valid environment variable name …

java kubernetes quarkus quarkus-rest-client

3
推荐指数
1
解决办法
1430
查看次数

如何为 Quarkus REST 客户端配置 ObjectMapper

我知道你可以实施 ObjectMapperCustomizer为 Quarkus REST 服务配置映射器。但是,Quarkus REST Client 的文档中并不清楚它是否会使用相同的(全局?)映射器。当外部服务与您自己的服务具有不同的 JSON 命名约定时,您如何处理这种情况?我找不到为 REST 客户端配置 ObjectMapper 的方法。我假设您可能可以使用 Jackson 注释来解决这个问题,但我正在寻找一种方法来仅通过配置 ObjectMapper 来实现。

所以,基本上,问题是:如何为一个特定的REST 客户端配置一个单独的ObjectMapper ?

java jackson microprofile quarkus quarkus-rest-client

3
推荐指数
1
解决办法
1334
查看次数

Vertx 在 Quarkus vertx munity web 客户端扩展中不可用

我试图测试 vertx munity web 客户端提供的反应式 web 客户端。

我遵循了官方指南Quarkus - Getting Started with Reactive

并在依赖项中添加了以下内容。

        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy</artifactId>
        </dependency>
        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-resteasy-jsonb</artifactId>
        </dependency>
        <dependency>
            <groupId>io.smallrye.reactive</groupId>
            <artifactId>smallrye-mutiny-vertx-web-client</artifactId>
        </dependency>
Run Code Online (Sandbox Code Playgroud)

但是当我Vertx像文章中提到的那样注入时,得到了 CDI 不满意的依赖异常。Vertx不可用。

Caused by: javax.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type io.vertx.mutiny.core.Vertx and qualifiers [@Default]
        - java member: com.example.PostResourceClient#vertx
Run Code Online (Sandbox Code Playgroud)

完整的代码在这里

reactive-programming vert.x quarkus smallrye quarkus-rest-client

3
推荐指数
1
解决办法
757
查看次数

Quarkus Rest-客户端节流/速率限制

我正在使用 quarkus.rest-client 调用外部 API,并希望将这些调用的频率限制为每秒 50 次,这样我就不会淹没外部服务。在没有 side-car 方法(通过代码)的情况下实现这一目标的推荐方法是什么?

resteasy quarkus quarkus-rest-client

3
推荐指数
1
解决办法
2116
查看次数

是否有可能以华丽的方式连接两个实体?

我想从两个不同的sql表中获取两个值。

在sql中,我们会执行“从A a内连接B b上选择a.value,b.value,a.id = b.id,其中...”

有可能以华丽的方式做到这一点吗?比如加入两个实体或类似的东西?

确实找不到太多关于与 quarkus panache 进行连接的信息。

quarkus-rest-client quarkus-panache quarkus-reactive

3
推荐指数
1
解决办法
3915
查看次数

尝试在 Quarkus 中进行 REST 调用时出错

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

QUARKUS - 使用 REST 客户端

QUARKUS - CDI 参考

QUARKUS - 研讨会

我收到如下错误:

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
Run Code Online (Sandbox Code Playgroud)

这是 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);

}

Run Code Online (Sandbox Code Playgroud)

这是服务层:

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 …
Run Code Online (Sandbox Code Playgroud)

java rest cdi quarkus-rest-client

2
推荐指数
1
解决办法
5160
查看次数

在 microprofile Rest 客户端中设置基本身份验证

我有一个服务公开了许多 Jax-RS 接口。我现在想使用这些接口来连接服务。我正在使用 Quarkus,这意味着我正在使用 microprofile Rest 客户端。因为我已经有了 JaxRS 接口,所以使用 @RegisterRestClient 方法并不是真正可行。相反,我使用 RestClientBuilder。

    MyService client = RestClientBuilder.newBuilder()
        .baseUri(URI.create("https://localhost:8080"))
        .build(MyService.class);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是身份验证。我需要访问的服务被锁定在基本身份验证后面。我找到的所有关于 microprofile REST 客户端的指南都是这个的变体版本的变体,其中解决方案是添加 headerparam。但这是不可能的,因为我已经预先制作了界面,并且复制粘贴整个内容来添加标头参数确实是我宁愿避免的事情。

还应该提到的是,我尝试过使用 @Provider 过滤器来设置标头,但我似乎无法弄清楚如何使用该方法仅针对单个 REST 客户端,而且我有几个。

那么:如何使用 microprofile Rest 客户端设置基本身份验证而不干扰 Jax-Rs 接口本身?

quarkus quarkus-rest-client

2
推荐指数
1
解决办法
8699
查看次数

为 Quarkus 中的所有 RestClient 调用添加日志记录

我实现了一个最小的 Quarkus RestClient,非常类似于文档中的示例(https://quarkus.io/guides/rest-client):

package org.acme.rest.client;

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
import org.jboss.resteasy.annotations.jaxrs.PathParam;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import java.util.Set;

@Path("/v2")
@RegisterRestClient
public interface CountriesService {

    @GET
    @Path("/name/{name}")
    Set<Country> getByName(@PathParam String name);
}
Run Code Online (Sandbox Code Playgroud)

如何为上述客户端的所有调用启用日志记录?
我需要显示完整的 URI、查询参数和 HTTP 响应代码,即使后者显示在单独的行上。

java logging quarkus quarkus-rest-client

1
推荐指数
1
解决办法
2234
查看次数