2017-02-11 15 views
1

doc on vertx website isn't quite clear on how to receive the body of a request.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 

Как я должен знать, как назвать, если они даже не поставить его в их документ ..

+0

Какую версию vert.x вы используете? это похоже на ошибку с реализацией консольного объекта, которая была исправлена ​​на 3.3.3 - https://github.com/vert-x3/vertx-lang-js/commit/2af2b50eb7493898e28e3ecc929ee21face71fc4. Что касается вышеприведенного кода, это, однако, кажется правильным. –

+0

@PauloLopes Я действительно использую более низкую версию, я использую одну в блоге post http://vertx.io/blog/vert-x3-says-hello-to-npm-users/ – Ced

ответ

0

Пауло сказал, что моя версия 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}"); 
    }); 
1

Я побежал в то же самое первый раз. Используйте .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 
    }); 
}