Previously on Betabeers Málaga…
http://es.slideshare.net/escobeitor1/introduccin­a­androidannotations
https://github.com/josescgar/BetaLoL 
Spring Boot
Crea tu API RESTful a toda
pastilla
@SpringBootApplication
public class MyAPIStarter {
    public static void main(String[] args) {
        SpringApplication.run(MyAPIStarter.class, args);
    }
}
¿Preguntas?
FIN
Yo
Twitter: @jescobeitor
Email: hello@escobeitor.com
LinkedIn: http://linkedin.com/in/jaescobar/
Spring
Lo bueno...
● Framework Java de referencia
● Inyección de dependencias
● Modularidad
● Documentación
● Librerias (MVC, AOP, Cloud, Data, etc…)
Lo no tan bueno…
● Configuración inicial
Spring Boot
● Configuración por defecto de Spring
● Listo para producción
● Un solo JAR ejecutable
● Servidor de aplicaciones embebido (Tomcat)
● Configuración automática siempre que sea posible
● Todas las ventajas de Spring
Hate Notepad
https://github.com/josescgar/HateNotepad
API Pública para registro de Trolls y
gente odiosa en general
“Porque odiar a trolls es gratis...”
Dependencias
spring-boot-starter-web
spring-boot-starter-security
sprinb-boot-starter-data-mongodb
spring-boot-starter-test
https://goo.gl/m7aUwJ
Starter
https://goo.gl/cUZ9Q3
● Incluir en el paquete padre del proyecto
● Escanea todas las clases en directorios inferiores
● Arranca el servidor y la aplicación
Configuración
https://goo.gl/fISJH8
● Opcional
● .xml
● .properties
● .yaml
● Java (@Configuration)
Configuración
https://goo.gl/RCdGEV
Seguridad
Spring security
● Autenticación
● Autorización
● Gestión de credenciales
● Control de acceso
● Configuración opcional
● Por defecto: Autenticación HTTP básica con contraseña
global aleatoria
Seguridad
https://goo.gl/PfIkFb
Repositorios
Spring data
● ¿Ni p*** idea de MongoDB/xSQL? No hay problema
● Definición de queries de forma semántica
● Operaciones CRUD “Out of the box”
● 0 código necesario
Repositorios
https://goo.gl/YNycpg
Repositorios
https://goo.gl/uZ4PU6
Repositorios
Controladores
Nuestra API
● Controlador REST → @RestController
● Endpoint REST →
@RequestMapping(value = “/XXXX”, method = YYY)
● Variable en la URL → @PathVariable
● Variable en el body → @RequestParam
● Responder con objeto JSON → @ResponseBody
Controladores
Inyección de dependencias
● El verdadero potencial de Spring
● Modularización
Controladores
Controladores
Controladores
https://goo.gl/Qm2hMV
Controladores
https://goo.gl/aCnTt2
Excepciones
https://goo.gl/kK22vS
● A nivel de controlador → @ExceptionHandler
● Globalmente → @ControllerAdvice
Testing
https://goo.gl/cSGISM
● Podemos simular requests HTTP a nuestra API
● Podemos simular métodos, parámetros, headers, etc.
Despliegue
$ gradle build
$ java ­jar hatenotepad­1.0.jar
¿Intrusismo profesional?
Hemos creado una API RESTful:
● Sin saber que significa RESTful
● Sin tener ni p*** idea de MongoDB
● Nivel de Java: tutorial de Taringa
● ¿Tomcat?
¿Preguntas?

Creando APIs REST con Spring Boot

Notas del editor

  • #2 - Da la impresión de ser muy “para salir del paso”
  • #3 - Asociación de palabras espaguetis - Preguntar quién sabe programar en Android
  • #4 - Da la impresión de ser muy “para salir del paso”
  • #6 - Recalcar desarrollo Android como aficionado - Anécdota Google Trends “Yo”
  • #7 - Es como un plato de espaguetis bonito.
  • #8 - Es como un plato de espaguetis bonito.