Fullmenu null

 

07 April 2018

En este script veremos como usando Groovy y Ratpack podemos crear un servidor web completo en un solo fichero.

Para un simple Hello world sería tan sencillo como:

@Grapes([
  @Grab('io.ratpack:ratpack-groovy:1.5.2'),
  @Grab('org.slf4j:slf4j-simple:1.7.25')
])
import static ratpack.groovy.Groovy.ratpack

ratpack {
    handlers {
        get {
            render "Hello World!"
        }
    }
}

Si guardamos este fichero con el nombre ratpack.groovy y lo ejecutamos con groovy ratpack.groovy obtendremos una traza como la siguiente

[main] INFO ratpack.server.RatpackServer - Starting server...
[main] INFO ratpack.server.RatpackServer - Building registry...
[main] INFO ratpack.server.RatpackServer - Ratpack started (development) for http://localhost:5050

Voila!, hemos creado nuestro primer servidor en unas pocas líneas.

Ahora probemos con algo un poco mas interesante:

Por ejemplo podríamos servir ficheros locales usando

@Grapes([
        @Grab('io.ratpack:ratpack-groovy:1.5.2'),
        @Grab('org.slf4j:slf4j-simple:1.7.25')
])
import static ratpack.groovy.Groovy.ratpack

ratpack {
    handlers {
        files {
            dir "."
        }
    }
}

En este caso estariamos sirviendo todo el directorio en el que se encuentre nuestro script, perfecto si necesitas compartir rapidamente ciertos ficheros con tus compañeros

Tambien podríamos facilmente trabajar con JSON, por ejemplo en caso de que queramos preparar una respuesta sencilla con la que los desarrolladores frontend puedan comenzar a trabajar mientras desarrollamos nuestro backend

@Grapes([
        @Grab('io.ratpack:ratpack-groovy:1.5.2'),
        @Grab('org.slf4j:slf4j-simple:1.7.25')
])
import static ratpack.groovy.Groovy.ratpack
import static ratpack.jackson.Jackson.json;

ratpack {
    handlers {
        get {
            render(json([Ratpack: 'is really cool']))
        }
    }
}

Estos pequeños ejemplos solo arañan la superficie de lo que ratpack es capaz de hacer, desde pequeños scripts rapidos como los presentados hasta aplicaciones completas con conexion a base datos, multiples integraciones y toda la logica de negocio que puedas desear.

Para mas informacion recomiendo visitar la documentacion oficial de Ratpack


Script
@Grapes([
        @Grab('io.ratpack:ratpack-groovy:1.5.2'),
        @Grab('org.slf4j:slf4j-simple:1.7.25')
])
import static ratpack.groovy.Groovy.ratpack

ratpack {
    handlers {
        files {
            dir "."
        }
    }
}