Creare microservice in Java con Vert.x

Mattepuffo's logo
Creare microservice in Java con Vert.x

Creare microservice in Java con Vert.x

Vert.x è una libreria che ci consente di creare microservice, e non solo, in diversi linguaggi.

Come potete vedere dalla documentazione, è composto di diversi "moduli", di cui i principali al momento sembrano:

  • core
  • web
  • web client

Oggi vediamo un esempio di web in Java.

Se usate Maven potete aggiungere la dipendenza nel pom.xml:

<dependency>
 <groupId>io.vertx</groupId>
 <artifactId>vertx-web</artifactId>
 <version>3.7.0</version>
</dependency>

Cominciamo con l'esempio più basico:

import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;

public class Main {

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        HttpServer server = vertx.createHttpServer();
        server.requestHandler(request -> {
            HttpServerResponse response = request.response();
            response.putHeader("content-type", "text/plain");
            response.end("Hello World!");
        });

        server.listen(8080);

        System.out.println("In ascolto su http://localhost:8080/");
    }

}

Aprite il browser su http://localhost:8080/ per vedere il risultato.

Il secondo esempio utilizza già l'oggetto Router, che useremo di più nei prossimi esempi; il codice qui sotto ha lo stesso risultato del primo esempio:

import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.Router;

public class Main {

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        HttpServer server = vertx.createHttpServer();
        
        Router router = Router.router(vertx);
        router.route().handler(routingContext -> {
            HttpServerResponse response = routingContext.response();
            response.putHeader("content-type", "text/plain");
            response.end("Primo esempio Router");
        });

        server.requestHandler(router).listen(8080);

        System.out.println("In ascolto su http://localhost:8080/");
    }

}

Qui sotto aggiungiamo una Route con un path specifico:

import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.Route;
import io.vertx.ext.web.Router;

public class Main {

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        HttpServer server = vertx.createHttpServer();

        Router router = Router.router(vertx);

        Route route1 = router.route().path("/");
        route1.handler(routingContext -> {
            HttpServerResponse response = routingContext.response();
            response.putHeader("content-type", "text/plain");
            response.end("Primo esempio Router");
        });

        Route route2 = router.route().path("/path");
        route2.handler(routingContext -> {
            HttpServerResponse response = routingContext.response();
            response.putHeader("content-type", "text/plain");
            response.end("Ciao da route1!");
        });

        server.requestHandler(router).listen(8080);

        System.out.println("In ascolto su http://localhost:8080/");
    }

}

Aprite il browser e provate ad andare sia su http://localhost:8080/ che su http://localhost:8080/path.

Infine vediamo un esempio di come passare dei valori alla Route:

import io.vertx.core.Vertx;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.ext.web.Route;
import io.vertx.ext.web.Router;

public class Main {

    public static void main(String[] args) {
        Vertx vertx = Vertx.vertx();
        HttpServer server = vertx.createHttpServer();

        Router router = Router.router(vertx);

        Route route1 = router.route().path("/");
        route1.handler(routingContext -> {
            HttpServerResponse response = routingContext.response();
            response.putHeader("content-type", "text/plain");
            response.end("Primo esempio Router");
        });

        Route route2 = router.route(HttpMethod.GET, "/ciao/:nome");
        route2.handler(routingContext -> {
            String nome = routingContext.request().getParam("nome");
            HttpServerResponse response = routingContext.response();
            response.putHeader("content-type", "text/plain");
            response.end("Ciao " + nome);
        });

        server.requestHandler(router).listen(8080);

        System.out.println("In ascolto su http://localhost:8080/");
    }

}

Per questo esempio andate sia http://localhost:8080/ che su http://localhost:8080/ciao/VOSTRO_NOME.

Ovviamente il discorso non si esaurisce qui; questa libreria può fare molto di più.

Sicuramente tornerò sull'argomento, in quanto mi sembra molto interessante.

Enjoy!


Condividi

Commentami!