use of io.vertx.core.http.HttpServer in project vertx-examples by vert-x3.
the class MainVerticle method start.
@Override
public void start(Future<Void> startFuture) throws Exception {
// PORT env check
try {
PORT = Integer.parseInt(System.getenv("PORT"));
} catch (Exception e) {
logger.warn("Environment variable PORT not found or not valid. Defautling to: " + PORT);
}
// Create HTTP server
HttpServer httpServer = getVertx().createHttpServer();
// Set Router
Router mainRouter = Router.router(getVertx());
mainRouter.route("/*").handler(StaticHandler.create());
httpServer.requestHandler(mainRouter::accept);
// Start listening
httpServer.listen(PORT, asyncResult -> {
if (asyncResult.succeeded()) {
logger.info("Listening on port: " + PORT);
startFuture.complete();
} else {
logger.error("Failed to bind on port " + PORT + ". Is it being used?");
startFuture.fail(asyncResult.cause());
}
});
}
use of io.vertx.core.http.HttpServer in project vertx-web by vert-x3.
the class OpenAPI3Examples method mainExample.
public void mainExample(Vertx vertx) {
// Load the api spec. This operation is asynchronous
OpenAPI3RouterFactory.create(vertx, "src/main/resources/petstore.yaml", openAPI3RouterFactoryAsyncResult -> {
if (openAPI3RouterFactoryAsyncResult.succeeded()) {
// Spec loaded with success, retrieve the router
OpenAPI3RouterFactory routerFactory = openAPI3RouterFactoryAsyncResult.result();
// You can enable or disable different features of router factory through mounting RouterFactoryOptions
// For example you can enable or disable the default failure handler for ValidationException
RouterFactoryOptions options = new RouterFactoryOptions().setMountValidationFailureHandler(false);
// Mount the options
routerFactory.setOptions(options);
// Add an handler with operationId
routerFactory.addHandlerByOperationId("listPets", routingContext -> {
// Handle listPets operation
routingContext.response().setStatusMessage("Called listPets").end();
});
// Add a failure handler to the same operationId
routerFactory.addFailureHandlerByOperationId("listPets", routingContext -> {
// This is the failure handler
Throwable failure = routingContext.failure();
if (failure instanceof ValidationException)
// Handle Validation Exception
routingContext.response().setStatusCode(400).setStatusMessage("ValidationException thrown! " + ((ValidationException) failure).type().name()).end();
});
// Add an handler with a combination of HttpMethod and path
routerFactory.addHandler(HttpMethod.POST, "/pets", routingContext -> {
// Extract request body and use it
RequestParameters params = routingContext.get("parsedParameters");
JsonObject pet = params.body().getJsonObject();
routingContext.response().putHeader("content-type", "application/json; charset=utf-8").end(pet.encodePrettily());
});
// Add a security handler
routerFactory.addSecurityHandler("api_key", routingContext -> {
// Handle security here
routingContext.next();
});
// Now you have to generate the router
Router router = routerFactory.getRouter();
// Now you can use your Router instance
HttpServer server = vertx.createHttpServer(new HttpServerOptions().setPort(8080).setHost("localhost"));
server.requestHandler(router::accept).listen();
} else {
// Something went wrong during router factory initialization
Throwable exception = openAPI3RouterFactoryAsyncResult.cause();
}
});
}
use of io.vertx.core.http.HttpServer in project vertx-web by vert-x3.
the class OpenAPI3Examples method generateRouter.
public void generateRouter(Vertx vertx, OpenAPI3RouterFactory routerFactory) {
Router router = routerFactory.getRouter();
HttpServer server = vertx.createHttpServer(new HttpServerOptions().setPort(8080).setHost("localhost"));
server.requestHandler(router::accept).listen();
}
use of io.vertx.core.http.HttpServer in project vertx-web by vert-x3.
the class WebClientTest method testStreamHttpServerRequest.
@Test
public void testStreamHttpServerRequest() throws Exception {
Buffer expected = TestUtils.randomBuffer(10000);
HttpServer server2 = vertx.createHttpServer(new HttpServerOptions().setPort(8081)).requestHandler(req -> req.bodyHandler(body -> {
assertEquals(body, expected);
req.response().end();
}));
startServer(server2);
WebClient webClient = WebClient.create(vertx);
try {
server.requestHandler(req -> webClient.postAbs("http://localhost:8081/").sendStream(req, onSuccess(resp -> req.response().end("ok"))));
startServer();
webClient.post(8080, "localhost", "/").sendBuffer(expected, onSuccess(resp -> {
assertEquals("ok", resp.bodyAsString());
complete();
}));
await();
} finally {
server2.close();
}
}
use of io.vertx.core.http.HttpServer in project vertx-web by vert-x3.
the class WebExamples method example1.
public void example1(Vertx vertx) {
HttpServer server = vertx.createHttpServer();
server.requestHandler(request -> {
// This handler gets called for each request that arrives on the server
HttpServerResponse response = request.response();
response.putHeader("content-type", "text/plain");
// Write to the response and end it
response.end("Hello World!");
});
server.listen(8080);
}
Aggregations