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

vertx获取简单post请求的正文

宗政博文
2023-03-14

他们在vertx网站上的文档不太清楚如何接收请求的正文。

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

如果他们甚至不把它放在他们的文件里,我怎么知道该怎么称呼它...

共有2个答案

罗翔
2023-03-14

我第一次遇到了同样的情况。使用<代码>。bodyHandler是一种方便的方法,可以在一块中接收整个请求正文。

作为参考,我将给您一个Java示例(您可以轻松地将其“转换”为ECMAScript):

public void login(final RoutingContext routingContext) {
  routingContext.request().bodyHandler(bodyHandler -> {
    final JsonObject body = bodyHandler.toJsonObject();
    // `body` now contains you what you POST'ed
  });
}
微生景胜
2023-03-14

保罗说我的vertx版本已经过时了,这是一个bug。我相信他的话。与此同时,我试着用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}");
    });
 类似资料:
  • 我有一个静态网站托管在AWS CloudFront上。在一条路由上,我需要接受POST方法,因为它是OAuth服务器的重定向,所以我决定开发一个lambda@edge。 我的想法是在'Viewer Request'上注册lambda并截取POST方法,读取正文并复制标头上的值,以使它们在我的静态网站上可读(我知道我可以用javascript访问Referrer标头)。 我设置了Lambda,我可以

  • 原理 对于POST请求的处理,koa2没有封装获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req,将POST表单数据解析成query string(例如:a=1&b=2&c=3),再将query string 解析成JSON格式(例如:{"a":"1", "b":"2", "c":"3"}) 注意:ctx.request是context经过封装的请求对象,ctx.

  • 我有一个创建处理程序,其中包含这样的验证方法: 在validate方法中,我检查输入,如果输入无效,我将其写入响应: 问题是,如果输入无效,我希望处理程序结束。但发生的情况是,如果输入无效,它会设置statusCode并写入响应,然后它继续创建方法中的流程,当它运行最后一行时,它想再次写入响应并抛出异常。我想在输入无效时结束或中止请求。我该怎么做? }

  • 我有以下问题:我试图在Spring控制器处理POST请求之前获取它的主体。为此,我使用HandlerInterceptorAdapter的preHandle()方法。 如本讨论中所述 SpringREST服务:从请求中检索JSON 我也使用使用此包装器,我设法打印了第一个POST请求的正文,但第二个POST抛出一个IOException:流关闭。 您对如何获取所有POST请求的正文有什么想法吗?

  • 只是为了学习目的,我使用处理程序将所有超文本传输协议请求记录到我的Web API 2应用程序。 这只是打印请求标头如下: 但是我也在POST正文中发送一个json对象,它没有打印。我想打印标题和正文。此外,我在调试时找不到任何东西在'HttpquiestMessage'对象。