vertx 获取一个简单 post 请求的主体
vertx get body of a simple post reques
他们的doc on vertx website isn't quite clear on how to receive the body of a request.
var vertx = Vertx.vertx();
var server = vertx.createHttpServer();
var Router = require("vertx-web-js/router");
var BodyHandler = require("vertx-web-js/body_handler");
var router = Router.router(vertx);
router.route().handler(BodyHandler.create().handle);
router.route('POST', "/a").handler(function (routingContext) {
var response = routingContext.response();
response.setChunked(true);
response.write("a json received");
var str = routingContext.getBodyAsJson()
console.log(str);
// Now end the response
routingContext.response().end();
});
我收到错误:
vertx-js/util/console.js:9 ReferenceError: "inspect" is not defined
如果他们甚至不把它放在他们的文档中,我怎么知道该调用什么..
我运行也是第一次进去。使用 .bodyHandler
这是一种接收整个请求正文的便捷方法。
作为参考,我会在 Java 中给你一个例子(你可以很容易地 "transform" 把它变成 ECMAScript):
public void login(final RoutingContext routingContext) {
routingContext.request().bodyHandler(bodyHandler -> {
final JsonObject body = bodyHandler.toJsonObject();
// `body` now contains you what you POST'ed
});
}
Paulo 说我的 vertx 版本已经过时,这是一个错误。我会相信他的话。与此同时,我尝试在 Java 中进行操作,就像我得到的答案一样。但是我这样做更成功:
router.route().handler(BodyHandler.create());
router.route(HttpMethod.POST, "/iamonline").handler(rc -> {
JsonObject json = rc.getBodyAsJson();
System.out.println(json.getString("id"));
HttpServerResponse response = rc.response();
response.putHeader("content-type", "application/json");
// Write to the response and end it
response.end("{\"status\": 200}");
});
他们的doc on vertx website isn't quite clear on how to receive the body of a request.
var vertx = Vertx.vertx();
var server = vertx.createHttpServer();
var Router = require("vertx-web-js/router");
var BodyHandler = require("vertx-web-js/body_handler");
var router = Router.router(vertx);
router.route().handler(BodyHandler.create().handle);
router.route('POST', "/a").handler(function (routingContext) {
var response = routingContext.response();
response.setChunked(true);
response.write("a json received");
var str = routingContext.getBodyAsJson()
console.log(str);
// Now end the response
routingContext.response().end();
});
我收到错误:
vertx-js/util/console.js:9 ReferenceError: "inspect" is not defined
如果他们甚至不把它放在他们的文档中,我怎么知道该调用什么..
我运行也是第一次进去。使用 .bodyHandler
这是一种接收整个请求正文的便捷方法。
作为参考,我会在 Java 中给你一个例子(你可以很容易地 "transform" 把它变成 ECMAScript):
public void login(final RoutingContext routingContext) {
routingContext.request().bodyHandler(bodyHandler -> {
final JsonObject body = bodyHandler.toJsonObject();
// `body` now contains you what you POST'ed
});
}
Paulo 说我的 vertx 版本已经过时,这是一个错误。我会相信他的话。与此同时,我尝试在 Java 中进行操作,就像我得到的答案一样。但是我这样做更成功:
router.route().handler(BodyHandler.create());
router.route(HttpMethod.POST, "/iamonline").handler(rc -> {
JsonObject json = rc.getBodyAsJson();
System.out.println(json.getString("id"));
HttpServerResponse response = rc.response();
response.putHeader("content-type", "application/json");
// Write to the response and end it
response.end("{\"status\": 200}");
});