viernes, 1 de febrero de 2019

Un sencillo servicio usando Spark Framework y Gson


En ésta ocasión crearemos un servicio REST. Para ello usaremos:

  • Gradle
  • Spark Framework
  • Gson
Crearemos una clase Departamento.java con dos atributos nombre y responsable. Un método que convertirá una lista de tipo Departamento a formato JSON.

Nuestro archivo build.gradle lucirá así:

plugins {
    id 'java'
    id 'application'
}

mainClassName = 'com.codemonkey.Main'

dependencies {
    compile "com.sparkjava:spark-core:2.7.2"
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

repositories {
    jcenter()
}

project.configurations.compile.resolvedConfiguration.resolvedArtifacts.each {
 println '   [Dependencias] '
 println 'artifact: '+it.name // << the artifact name
 println 'referencia: '+it.file // << the file reference
 println '**************************'
}

task listar << {
 println "Hoy es "+new Date()
}
Nuestra clase Departamento.java luce así:
package com.codemonkey.model;

public class Departamento {
 private String nombre;
 private String responsable;

 public Departamento() {
 }

 public Departamento(String nombre, String responsable) {
  super();
  this.nombre = nombre;
  this.responsable = responsable;
 }

 public String getNombre() {
  return nombre;
 }

 public void setNombre(String nombre) {
  this.nombre = nombre;
 }

 public String getResponsable() {
  return responsable;
 }

 public void setResponsable(String responsable) {
  this.responsable = responsable;
 }

 @Override
 public String toString() {
  return "{nombre:" + nombre + ", responsable:" + responsable + "}";
 }

}

Nuestra clase principal Main.java :


package com.codemonkey;

import static java.lang.System.out;
import java.util.Arrays;
import java.util.List;
import static spark.Spark.*;
import com.codemonkey.model.Departamento;
import com.google.gson.Gson;


public class Main {
 
 public static final int STATUS = 200;
 public static final String TIPO = "application/json";
 
    public static void main(String[] args) {
     List<Departamento> departamentos = Arrays.asList(new Departamento("Informatica","Ramon_Romero")
       , new Departamento("Contabilidad","Viridiana_Gomez"), new Departamento("Recursos_Humanos","Ana_Lilia_Gutierrez"));
     out.println(departamentos.toString());
     //http://localhost:4567/departamentos
     get("/departamentos", (req, res)->{
      res.status(STATUS);
      res.type(TIPO);
      return departamentos.toString();
     }, new Gson()::toJson);
    }
    
}



//Construimos:
$ gradle build

//Ejecutamos:
$ gradle run

Abrimos el navegador en http://localhost:4567/departamentos

Links:
https://es.wikipedia.org/wiki/Gson
http://sparkjava.com/
https://codemonkeyjunior.wordpress.com/2019/01/24/gson-de-clase-a-json/