import io.vertx.core.Future; import io.vertx.core.Promise; import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; import io.vertx.core.http.HttpServer; import io.vertx.core.http.HttpServerResponse; import io.vertx.core.json.JsonObject; import io.vertx.core.net.SocketAddress; import io.vertx.ext.web.Route; import io.vertx.ext.web.Router; import io.vertx.ext.web.client.HttpResponse; import io.vertx.ext.web.client.WebClient; public class Sandbox { final private static int PORT_TDG = 8181; final private static int PORT_MY = 8080; final private static String HOST = "localhost"; final private static String TOKEN = "9f226286-e0d8-4125-ad43-b123b4e464da"; final private static String TYPE = "application/json;charset=utf-8"; public static void main(String[] args) { Vertx vertx = Vertx.vertx(); WebClient client = WebClient.create(vertx); Router router = Router.router(vertx); Promise> promise = Promise.promise(); JsonObject request = new JsonObject() .put("query", "{Book { uuid, book_name, author }}"); router.post("/graphql") .handler(ctx -> { client .post("/graphql") .sendJson(request, t -> { if (t.succeeded()) { promise.complete(t.result()); } else { promise.fail(new Exception("Error while sending request to tarantool", t.cause())); } }); }); promise.future().onComplete(t -> { if (t.succeeded()) { var result = t.result(); var response = ctx.response() .setStatusCode(result.statusCode()) .setChunked(true); copyHeaders(result, response); response.write(result.bodyAsBuffer()) .end(); } }); } }