当前位置: 首页 > 知识库问答 >
问题:

Quarkus Mutiny Web客户端安全解码JSON

王锐
2023-03-14

我一直在进入Quarkus并试图利用叛变Vertx网络客户端。我的代码可以工作,但我不希望依赖不安全/未检查的分配,这就是我目前在HttpResponse上使用bodyAsJson方法编写代码的方式。有没有更好的方法,或者更标准的方法来解码来自Mutiny Vertx客户端的JSON?我意识到我可以调用bodyAsJsonObject并返回它,但我需要对API调用返回的数据进行处理,所以我需要将其解码为表示数据形状/结构的类。

package com.something.app.language;

import com.something.app.model.Language;
import io.micrometer.core.annotation.Timed;
import io.smallrye.mutiny.Uni;
import io.vertx.mutiny.core.Vertx;
import io.vertx.mutiny.ext.web.client.WebClient;

import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import java.util.List;

@ApplicationScoped
public class LanguageService {

    @Inject
    Vertx vertx;

    private WebClient client;

    @PostConstruct
    void init() {
        this.client = WebClient.create(vertx);
    }

    @Timed
    public Uni<List<Language>> getLanguages() {
        return this.client
                .get(80, "somehost.com", "/languages")
                .timeout(1000)
                .send()
                .onItem()
                .transform(resp -> {
                   if (resp.statusCode() == 200) {
                       return resp.bodyAsJson(List.class);
                   } else {
                       throw new RuntimeException("");
                   }
                });
    }
}

共有1个答案

单于俊智
2023-03-14

有几种方法。首先,Vert. x在引擎盖下使用杰克逊,因此可以用杰克逊做的一切都是可能的。

您可以使用resp。bodyAsJson(MyStructure.class),它将创建MyStructure的一个实例。

如果您有一个JSON Array,您可以将每个元素映射到对象类。

最后,您可以实现自己的身体编解码器(见https://vertx.io/docs/apidocs/io/vertx/ext/web/codec/BodyCodec.html)。

 类似资料:
  • 问题内容: 我有X.509证书保护的远程Web服务。 我生成了Web服务客户端的内容(使用jax-ws),但是需要配置是否用于证书的用途。 我应该如何进行? 我想我应该在本地信任的密钥库中注册证书,并且它们设置如下所示: 但是尚不清楚应提供哪些数据作为参数。 请帮忙。 谢谢。 问题答案: 密钥库属性定义用于向服务器标识您的证书: 这是带有x509证书的Java密钥库。您可以使用Java程序keyt

  • 问题内容: 最近,我一直在查看Pagedown.js,以在页面上使用mark-down而不是丑陋的只读textareas。 我非常谨慎,因为欺骗已转换的转换器似乎很容易。我已经看到了一些有关Angular.js及其html绑定的讨论,并且在Knockout.js 3.0发布时听到了一些关于html绑定以前不安全的信息。 似乎有人需要做的所有事情来禁用Pagedown.js中的消毒剂,例如- 他们可

  • jersey 2.0的文档说明: 客户端实例是昂贵的资源。建议在创建Web资源时重用已配置的实例。Web资源的创建、请求的构建和响应的接收都保证是线程安全的。因此,客户端实例和WebResources实例可以在多个线程之间共享 在版本2.1中客户端仍然是线程安全的吗?我在2.1的文档中找不到关于线程安全的信息。

  • 这个面试官是我遇到最好的面试官。很幸运 堆栈区别 线程和进程区别 进程通信方法 https请求步骤 工厂模式 数据库主键作用,触发器

  • Wemall安卓客户端是wemall微信商城的Android客户端程序,服务端采用wemall微信商城,不对原商城做任何修改,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可随意定制修改,不做任何限制 目前wemall客户端为1.1版本,本人在工作之余进行更新维护,有任何问题可通过邮箱793554262@qq.com反馈,我将在有时间的情况下尽快提供更新修复 目前wemall微信商城