Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Introducción a Spark Framework

Introducción a Spark Framework

Autor jc mouse lunes, julio 2, 2018

Spark Framework es un conjunto de librerías para los lenguajes Java y Kotlin que nos sirve para el desarrollo rápido y sencillo de aplicaciones web.

En este post realizaremos una breve introducción práctica a este micro framework desarrollando una aplicación trivial como ejemplo.

¿Que necesitamos?

  • IDE Netbeans 8.x
  • Java 1.8 o superior
  • Navegador Web (Chrome, Firefox, etc)
  • Cliente REST Imsomia (Versión gratuita basta y sobra)
  • Conocimientos sobre aplicaciones REST
  • Maven instalado y configurado

Nivel: Intermedio-Avanzado

Tiempo 15 minutos

Paso 1: Crear y configurar el proyecto

Archivo -> Nuevo Proyecto, en categorías seleccionamos maven y en proyectos java application , para continuar presionar el botón [siguiente]

A continuación escribimos el nombre del proyecto EjemploSpark (sin espacios) y seleccionamos una ubicación para guardar el proyecto como se ve en la siguiente imagen.

maven proyecto

Para crear el proyecto, clic en [terminar]

microservice

Clic derecho sobre Dependencias -> Agregar dependencias, en la ventana que aparece debemos llenar los siguientes  datos:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.7.2</version>
</dependency>

Estos datos se encuentran en la pagina del proyecto Spark la versión actual de Spark a la fecha de realización de este post, es la 2.7.2

maven dependencia

Para terminar presionar [agregar]

Nuevamente clic derecho sobre Dependencias -> descargar dependencias declaradas, esperamos unos segundos para que se termine la descarga desde los servidores externos a nuestro servidor local.

jetty server jar

Paso 2 “Hola Mundo”

No puede faltar el clásico “Hello World” y es lo que haremos a continuación.

Clic derecho en paquete de fuentes -> nuevo -> Java Main Class…

Escribir en Class Name “Main” y en package seleccionar nuestro package “net.jcmouse.ejemplospark“, clic en [terminar] para crear la clase principal.

Abre la clase Main y reemplaza por:

package net.jcmouse.ejemplospark;

import static spark.Spark.get;

/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {
    
    public static void main(String[] args) {
        get("/saludo", (request, response) -> "Hola Mundo Cruel!!!");
    }
    
}

Eso es todo, tu primera app en Spark esta lista, F6 para ejecutar

Abre tu navegador favorito, escribe “http://localhost:4567/saludo” y presiona ENTER

 

port 4567

Spark por defecto se ejecuta en el puerto 4567  bajo el server Jetty que esta embebido dentro nuestra aplicación, el puerto puede ser cambiado por otro usando port().

Paso 3 GET y POST

Ahora complicaremos un poco más las cosas implementando los métodos GET y POST a nuestro sencillo API REST.

GET. Nuestro saludo solicitara como parámetro un nombre (name), caso contrario saludara como “Hola Anónimo”.

POST. Este método nos permite crear recursos, solo como ejemplo en este post lo usaremos para emular una autenticación de usuario para obtener ya sea el código 200 OK o 401 Unauthorized

Modificamos nuestra clase Main de la siguiente manera:

package net.jcmouse.ejemplospark;

import static spark.Spark.get;
import static spark.Spark.post;

/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class Main {

    public static void main(String[] args) {

        get("/saludo", (request, response)
                -> {
            response.status(200);//Codigo de respuesta
            response.type("application/json");//tipo de contenido JSON            
            return "{\"Saludo\": \"Hola "
                    + ((request.queryParams("name") != null) ? request.queryParams("name") : "Anonimo") + "\"}";
        });

        post("/loquesea", (request, response) -> {
            response.type("application/json");//tipo de contenido    
            //codigo de respuesta
            response.status( (request.headers("key")!=null)?200:401 ); 
            //Imprime JSON y Headers enviado por el cliente
            System.out.println("body: " + request.body());
            System.out.println("key: " + request.headers("key"));            
            return "{\"Respuesta\": \""+((request.headers("key")!=null)?"Bienvenido":"Unauthorized")+"\"}";
        });

    }

}

Guardamos los cambios y ejecutamos nuestra aplicación.

A continuación abrimos el cliente REST Imsomnia y creamos una nueva solicitud con el nombre de “Saludo” y el método GET, escribimos “http://localhost:4567/saludo” y presionamos SEND

cliente rest spark

Nuestro app responde con un “Hola Anonimo” porque no pasamos el parámetro name, modificamos nuestra solicitud de la siguiente forma”http://localhost:4567/saludo?name=JCMouse” y presionamos SEND

mouse jetty headers

Para terminar creamos una nueva solicitud “Lo que sea” con el método POST con tipo de cuerpo JSON y escribimos “http://localhost:4567/loquesea” agregamos un pequeño objeto JSON en el body y presionamos SEND, es decir:

No Autorizado

Obtenemos como respuesta un código 401 Unauthorized que quiere decir que no tenemos autorización para ver el servicio solicitado.

Nos dirigimos a la pestaña Header (1),  añadimos un nuevo item “key” y su valor “123456” (2) (valor sin importancia) finalmente volvemos a presionar SEND y tenemos:

http code 200

Ahora obtenemos como respuesta un código 200 y un mensaje de bienvenida.

Eso es todo por el momento, podemos ver como crear una app con Spark y Java 8 es bastante sencillo y el código es limpio y fácil de entender. El ejemplo de este post reitero es trivial y solo nos sirve para entender el funcionamiento básico de este microframework, espero les haya gustado.

enjoy!!!

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Aplicaciones java con Maven

Aplicaciones java con Maven

¿Qué es Maven? Maven es una herramienta de software para la gestión y construcción de proyectos Java. Provee un conjunto...

Creación de mapas con shapes – Parte 3

Creación de mapas con shapes – Parte 3

En nuestro mapa interactivo, se hará uso de un mapa departamental dividido en provincias, todo a través  de shapes, si b...

Arrastrar y cargar archivo Excel *.xlsx en tabla Java

Arrastrar y cargar archivo Excel *.xlsx en tabla Java

A continuación tenemos una clase que nos permite arrastrar un archivo de Excel (*.xlsx) y cargar su contenido en una tab...

Gráficos estadísticos con Base de Datos SQLite

Gráficos estadísticos con Base de Datos SQLite

Si necesitamos mostrar gráficos estadísticos en nuestras aplicaciones android, contamos con muchas librerías disponibles...

Bloquear pantalla cliente

Bloquear pantalla cliente

En este tutorial crearemos una aplicación que bloqueara toda la pantalla de la PC y no nos dejara realizar ninguna tarea...

Modificar las pestañas de JTabbedPane

Modificar las pestañas de JTabbedPane

En este tutorial veremos lo fácil que es personalizar las pestañas de un JTabbedPane con unas cuantas lineas de código y...

Comparte lo que sabes

Categorias

Últimas entradas

El Tangram es un juego chino muy antiguo, esta compuesto por 7 piezas: un paralelogramo (romboide), un cuadrado y 5 triá...

Espresso es un framework de testing propiedad de Google que está dirigido a desarrolladores que creen que las pruebas au...

Harvard WorldMap es una plataforma de mapeo de código abierto en línea, desarrollado por el Centro de Análisis Geográfic...

Realizar pruebas sobre nuestro código nos permiten comprobar su correcto funcionamiento e integración con otros módulos...

Android Bolivia

MAUS