@Override public void start(Future<Void> startFuture) throws Exception { vertx.createHttpServer().requestHandler(request -> { String name = request.getParam("name"); LOG.info("Got request for name: " + name); if (name == null) { request.response().setStatusCode(400).end("Missing name"); } else { // It's fine to call the greeter from the event loop as it's not blocking request.response().end(greeter.sayHello(name)); } }).listen(8080, ar -> { if (ar.succeeded()) { LOG.info("GreetingVerticle started: @" + this.hashCode()); startFuture.complete(); } else { startFuture.fail(ar.cause()); } }); } }
private void invoke(HttpServerRequest request) { String param = request.getParam("name"); if (param == null) { param = "vert.x"; } vertx.eventBus().<String>send("invocation", param, reply -> { if (reply.failed()) { request.response().setStatusCode(400).end(reply.cause().getMessage()); } else { request.response().setStatusCode(400).end(reply.result().body()); } }); } }
private void handleAddProduct(RoutingContext routingContext) { String productID = routingContext.request().getParam("productID"); HttpServerResponse response = routingContext.response(); if (productID == null) { sendError(400, response); } else { JsonObject product = routingContext.getBodyAsJson(); if (product == null) { sendError(400, response); } else { products.put(productID, product); response.end(); } } }
private void handleAddProduct(RoutingContext routingContext) { String productID = routingContext.request().getParam("productID"); HttpServerResponse response = routingContext.response(); if (productID == null) { sendError(400, response); } else { JsonObject product = routingContext.getBodyAsJson(); if (product == null) { sendError(400, response); } else { products.put(productID, product); response.end(); } } }
@Override public void start(Future<Void> startFuture) throws Exception { HttpServerOptions options = new HttpServerOptions().setPort(config().getInteger("port")); vertx.createHttpServer(options).requestHandler(request -> { String name = request.getParam("name"); if (name == null) { request.response().setStatusCode(400).end("Missing name"); } else { vertx.eventBus().<String>send("hello", name, ar -> { if (ar.succeeded()) { request.response().end(ar.result().body()); } else { request.response().setStatusCode(500).end(ar.cause().getMessage()); } }); } }).listen(ar -> { if (ar.succeeded()) { startFuture.complete(); } else { startFuture.fail(ar.cause()); } }); } }
@Override public void start() { Router router = Router.router(vertx); router.get("/").handler(rc -> { String param = rc.request().getParam("name"); if (param == null) { param = "world"; } vertx.eventBus().<String>send("request", param, reply -> { if (reply.failed()) { rc.response().setStatusCode(400).end(reply.cause().getMessage()); } else { String content = reply.result().body(); rc.response().end(content); } }); }); vertx.createHttpServer() .requestHandler(router) .listen(8080); } }
private void handleGetProduct(RoutingContext routingContext) { String productID = routingContext.request().getParam("productID"); HttpServerResponse response = routingContext.response(); if (productID == null) { sendError(400, response); } else { JsonObject product = products.get(productID); if (product == null) { sendError(404, response); } else { response.putHeader("content-type", "application/json").end(product.encodePrettily()); } } }
private void handleGetProduct(RoutingContext routingContext) { String productID = routingContext.request().getParam("productID"); HttpServerResponse response = routingContext.response(); if (productID == null) { sendError(400, response); } else { JsonObject product = products.get(productID); if (product == null) { sendError(404, response); } else { response.putHeader("content-type", "application/json").end(product.encode()); } } }
private void handleGetProduct(RoutingContext routingContext) { String productID = routingContext.request().getParam("productID"); HttpServerResponse response = routingContext.response(); if (productID == null) { sendError(400, response); } else { SQLConnection conn = routingContext.get("conn"); conn.queryWithParams("SELECT id, name, price, weight FROM products where id = ?", new JsonArray().add(Integer.parseInt(productID)), query -> { if (query.failed()) { sendError(500, response); } else { if (query.result().getNumRows() == 0) { sendError(404, response); } else { response.putHeader("content-type", "application/json").end(query.result().getRows().get(0).encode()); } } }); } }
ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "text/plain"); ctx.response().end("Hello " + ctx.request().getParam("name") + "!"); });
mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> { mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> { user.put("address", update.getString("address")); mongo.replace("users", new JsonObject().put("_id", ctx.request().getParam("id")), user, replace -> { mongo.findOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), null, lookup -> { } else { mongo.remove("users", new JsonObject().put("_id", ctx.request().getParam("id")), remove -> {
mongo.removeOne("users", new JsonObject().put("_id", ctx.request().getParam("id")), lookup -> {
@Override public String getParameter(String name) { if (parameterMap != null) { String[] values = parameterMap.get(name); return values == null ? null : values[0]; } return this.vertxRequest.getParam(name); }
private void testServerMaxInitialLineLength(int maxInitialLength) { String longParam = TestUtils.randomAlphaString(5000); server.close(); server = vertx.createHttpServer(new HttpServerOptions().setMaxInitialLineLength(maxInitialLength) .setHost("localhost").setPort(8080)).requestHandler(req -> { assertEquals(req.getParam("t"), longParam); req.response().end(); }).listen(onSuccess(res -> { HttpClientRequest req = vertx.createHttpClient(new HttpClientOptions()) .request(HttpMethod.GET, 8080, "localhost", "/?t=" + longParam, onSuccess(resp -> { if (maxInitialLength > HttpServerOptions.DEFAULT_MAX_INITIAL_LINE_LENGTH) { assertEquals(200, resp.statusCode()); testComplete(); } else { assertEquals(414, resp.statusCode()); resp.request().connection().closeHandler(v -> { testComplete(); }); } })); req.end(); })); await(); }
@Test public void testRerouteReparse() throws Exception { router.get("/users/:name").handler(ctx -> ctx.response().end(ctx.request().getParam("name"))); router.get("/me").handler(ctx -> ctx.reroute("/users/paulo")); testRequest(HttpMethod.GET, "/me", 200, "OK", "paulo"); }
EventSourceTransport(Vertx vertx, Router router, LocalMap<String, SockJSSession> sessions, SockJSHandlerOptions options, Handler<SockJSSocket> sockHandler) { super(vertx, sessions, options); String eventSourceRE = COMMON_PATH_ELEMENT_RE + "eventsource"; router.getWithRegex(eventSourceRE).handler(rc -> { if (log.isTraceEnabled()) log.trace("EventSource transport, get: " + rc.request().uri()); String sessionID = rc.request().getParam("param0"); SockJSSession session = getSession(rc, options.getSessionTimeout(), options.getHeartbeatInterval(), sessionID, sockHandler); HttpServerRequest req = rc.request(); session.register(req, new EventSourceListener(options.getMaxBytesStreaming(), rc, session)); }); }
private void registerHandler(Router router, Handler<SockJSSocket> sockHandler, String re, boolean streaming, SockJSHandlerOptions options) { router.postWithRegex(re).handler(rc -> { if (log.isTraceEnabled()) log.trace("XHR, post, " + rc.request().uri()); setNoCacheHeaders(rc); String sessionID = rc.request().getParam("param0"); SockJSSession session = getSession(rc, options.getSessionTimeout(), options.getHeartbeatInterval(), sessionID, sockHandler); HttpServerRequest req = rc.request(); session.register(req, streaming? new XhrStreamingListener(options.getMaxBytesStreaming(), rc, session) : new XhrPollingListener(rc, session)); }); }
@Test public void testDuplicateParams() throws Exception { router.route("/test/:p").handler(RoutingContext::next); router.route("/test/:p").handler(RoutingContext::next); router.route("/test/:p").handler(routingContext -> { assertEquals(1, routingContext.request().params().getAll("p").size()); assertEquals("abc", routingContext.request().getParam("p")); routingContext.response().end(); }); testRequest(HttpMethod.GET, "/test/abc", 200, "OK"); }
@Test public void testDuplicateParams2() throws Exception { router.route("/test/:p").handler(RoutingContext::next); router.route("/test/:p").handler(ctx -> ctx.reroute("/done/abc/cde")); router.route("/done/:a/:p").handler(routingContext -> { assertEquals(1, routingContext.request().params().getAll("p").size()); assertEquals("cde", routingContext.request().getParam("p")); routingContext.response().end(); }); testRequest(HttpMethod.GET, "/test/abc", 200, "OK"); }
@Test public void testGetWithPlusPath2() throws Exception { router.get("/:param1").useNormalisedPath(false).handler(rc -> { assertEquals("/some+path", rc.normalisedPath()); assertEquals("some+path", rc.pathParam("param1")); assertEquals("some query", rc.request().getParam("q1")); rc.response().setStatusMessage("foo").end(); }); testRequest(HttpMethod.GET, "/some+path?q1=some+query", 200, "foo"); }