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

如何使Vertx请求处理程序期望JSON数据?

陆才俊
2023-03-14

我正在运行VertX HTTP服务器。当内容类型为超文本标记语言/表单时,它可以理解请求,但当我尝试发布JSON数据时,它甚至从未进入请求处理程序。

我需要做些什么才能让Vertx期望JSON吗?是否支持?

共有2个答案

包兴思
2023-03-14

如果可以,请查看最新的Vertx web,它们提供了一种非常简洁的方式,可以使用优雅的语法ala-NodeJs路由处理各种请求格式(多部分数据、url编码参数、文件上载等)

尽管您需要将代码迁移到Vertx 3.0

童子明
2023-03-14

下面是一个java示例。请注意,将处理json的数据处理程序仅针对post请求执行。将一个包含一些json数据的请求发布到该站点,它将返回相同的请求。

import org.vertx.java.core.Handler;
import org.vertx.java.core.buffer.Buffer;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.platform.Verticle;

/**
 * Simple Http server
 */
public class HttpVerticle extends Verticle {
    public void start() {
        vertx.createHttpServer()
                .requestHandler(new Handler<HttpServerRequest>() {
                    @Override
                    public void handle(final HttpServerRequest request) {
                        container.logger().info(
                                "Got request for " + request.path());
                        if (request.method().equalsIgnoreCase("POST")) {
                            request.dataHandler(new Handler<Buffer>() {
                                @Override
                                public void handle(Buffer data) {
                                    request.response().end("got data " + data);
                                }
                            });
                        } else {
                            request.response().end("got request");
                        }
                    }
                }).listen(8080);
        container.logger().info("HttpVerticle started");
    }
}
 类似资料:
  • 我使用的是Vertx3.5.0,非常新。我试图在客户端取消请求时取消代码执行。 目前,我们要做的第一件事就是部署一个verticle来运行HttpServer,然后将所有路由添加到路由器。从这里开始,每个路由都有一个处理函数。在这个处理器中,我正在尝试: 这是我见过的唯一一个实际捕获连接关闭的方法,但问题是它没有在eventloop中足够早地执行处理程序。因此,如果我在那里有任何日志,它将看起来像

  • 我正在使用Java VertX框架,并尝试使用VertX WebClient和一个简单的HTTP请求加载多个JSON对象。我想并行地做这件事,这样可以加快进程。 我有一个endpoint对象: 在另一个类中,我有以下应该并行处理的函数(源代码): 我不知道如何继续下去。VertX WebClient强制我使用异步处理程序,这意味着我不能直接返回JsonObject。

  • 您好,我正在独立应用程序上使用java中的vertx读取web应用程序中的端口。我想从表单中获取post数据。我的web应用程序有一个带有post方法的表单,我希望阅读该表单。我的逻辑是 > 创建垂直线 创建http服务器 创建处理程序请求(它不接受代码中的所有参数) 我不知道我错过了什么,我是vertx的新手。 出于某种原因,我不能在这里发布代码。 我的代码:https://pastebin.c

  • 假设我在1..n个VertX(V)实例前面有一个负载均衡器(LB),每个VertX实例都连接到一个队列(Q),我有1..m个后端(BE)。 用户点击一个按钮发出post请求,甚至打开一个web套接字,负载均衡器将请求转发给VertX实例之一,VertX实例向队列发出请求,一个后端使用该消息并返回响应;如果正确的VertX实例使用了它,它可以查找响应处理程序并向用户写入响应;如果错误的VertX实例

  • 上周我阅读了有关vertx的文档。我不明白的是vertx处理器是如何工作的?例如 和服务器是: (P.S.我知道我首先应该检查处理程序是否成功,然后采取一些措施,但为了简化代码,我删除了这种检查,如果在30秒内没有任何响应,则处理程序中会出现异常,也会从正式文档中删除。) 从上面的代码中,客户端每秒发送请求,并且不等待响应,但是它有一个处理程序,当响应到来时将执行该处理程序。 jdbcVertx监

  • 问题内容: 使用AlamoFire框架后,我注意到完成处理程序在主线程上运行。我想知道下面的代码是否是在完成处理程序中创建Core Data导入任务的好习惯: 问题答案: 这是一个非常好的问题。您的方法是完全有效的。但是,Alamofire实际上可以帮助您进一步简化此流程。 您的示例代码调度队列细分 在示例代码中,您将在以下调度队列之间跳转: NSURLSession分派队列 TaskDelega