Я запускаю сборку Gradle с Vertx Web. мои библиотечные зависимости включают
// for mock API serving https://mvnrepository.com/artifact/io.vertx/vertx-core
compile group: 'io.vertx', name: 'vertx-core', version: '3.5.3'
compile group: 'io.vertx', name: 'vertx-web', version: '3.5.3'
так что в моем отличном коде скрипта я делаю это
Vertx vertx = Vertx.vertx()
HttpServer server = vertx.createHttpServer()
...
Затем я объявляю маршрут, чтобы перехватить все запросы к ресурсу, обработать запрос и сформировать ответ - стараясь сделать его простым - просто вернуть простую строку в качестве ответа
Router allRouter = Router.router(vertx)
allRouter.route ( "/api/now/table/incident")
.handler(BodyHandler.create())
.blockingHandler { routingContext ->
def request = routingContext.request()
HttpMethod method = request.method()
def response = routingContext.response()
response.putHeader ("content-type", "text/plain")
def uri = routingContext.request().absoluteURI()
switch (method) {
case HttpMethod.GET:
println "processing a resource GET on uri : $uri "
response.end ("(GET) howdi will")
break
case HttpMethod.POST:
String bodyEnc = routingContext.getBodyAsJson().encodePrettily()
println "processing a resource POST on uri : $uri"
println "post request received post data : " + bodyEnc
response.end ("(POST) howdi will")
break
}
}
Я создаю обработчик для BodyHandling, перед общим обработчиком в маршруте.
Затем я запускаю сервер с маршрутом
server.requestHandler(allRouter.&accept)
server.listen(8081, "localhost")
отлично работает при получении запроса от почтальона.
когда я использую почтовый запрос с данными тела запроса - служба зависает, и мне приходится отменять - она никогда не попадает в оператор switch. Все, что происходит в консоли, когда я выпускаю сообщение, это
23:30:16.455 [vert.x-eventloop-thread-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxCapacityPerThread: 32768
23:30:16.455 [vert.x-eventloop-thread-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.maxSharedCapacityFactor: 2
23:30:16.455 [vert.x-eventloop-thread-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.linkCapacity: 16
23:30:16.455 [vert.x-eventloop-thread-1] DEBUG io.netty.util.Recycler - -Dio.netty.recycler.ratio: 8
23:30:16.478 [vert.x-eventloop-thread-1] DEBUG io.netty.buffer.AbstractByteBuf - -Dio.netty.buffer.bytebuf.checkAccessible: true
23:30:16.482 [vert.x-eventloop-thread-1] DEBUG io.netty.util.ResourceLeakDetectorFactory - Loaded default ResourceLeakDetector: io.netty.util.ResourceLeakDetector@51d486
Это тема, ближайшая к теме введите описание ссылки здесь
Я пробовал это бесчисленное множество способов сейчас, установил bodyHandler внутри запроса, когда я его получил и т. Д. - не могу заставить его работать.
мой пост почтальона выглядит следующим образом - где заголовки установлены в Content-Type application / json, Content-Length составляет 296 байтов (длина байтов в utf16), а Accept - это text / plain для получения простого ответа
Документация просто не понятна. Взорван 12 часов, пытаясь взломать это.
Кто-нибудь точно знает, как нужно получать данные публикации по запросу при использовании vertx web, пожалуйста