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

How to make Vertx request handler expect JSON data?

我是 运行 VertX HTTP 服务器。它理解内容类型为 HTML/forms 时的请求,但是当我尝试 post JSON 数据时,它甚至从未进入请求处理程序。

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

这是一个 java 示例。请注意,将处理 json 的数据处理程序仅针对 post 请求执行。 Post 一个带有一些 json 数据的请求,它将 return 与此相同。

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");
    }
}

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

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