Construir API con Spring de Java

Inyección de dependencias

Es uno de los cinco principios de diseño de software S.O.L.I.D:

  • Single responsibility.
  • Open/Closed.
  • Liskov substitution.
  • Interface segregation.
  • Dependency inversion.

La inversión de dependencia puede ser usado con el patrón de diseño inyección de dependencias que consiste en pasar la dependencia a la clase que lo va a utilizar en lugar de crearla internamente dentro esa clase. Esto con el fin de no acoplar la clase a la implementación que está utilizando.

La inversión de control (IoC) menciona que un framework es quien toma control de los objetos. En este caso Spring. El cual se encarga de crear y administrar instancias de objetos que se conocen como beans o componentes.

Entonces Spring usa la notación @Autowired para la inyección de dependencias.

Servicio de la capa del dominio

El servicio de dominio actúa como intermediario entre el controlador de la API y el repositorio. En spring se decora la clase con la anotación @Service.

El servicio trabaja en términos del dominio no la persistencia directamente. Se hace uso de los repositorios del dominio.

Exponer API

El controlador hace uso de alguna instancia de un servicio para obtener, guardar, actualizar o eliminar información.

  • @RestController: se usa para exponer la clase de la API.
  • @RequestMapping(“/ruta”): indica la ruta para exponer la clase.
  • @GetMapping(“/ruta”): obtener información desde un método en el controlador.
  • @PostMapping(“/ruta”): guardar o actualizar información desde un método en el controlador.
  • @DeleteMapping(“/ruta”): borrar algún registro desde un método en el controlador.

Las rutas pueden llevar variables usando {variable} y se pueden usar estas variables con la anotación @PathVariable(“variable”) al comienzo de cada argumento en la firma del método.

Controlar las respuestas HTTP

Para controlar los llamados (peticiones) que reciben los endpoints se usan códigos HTTP (HttpStatus) particulares con ResponseEntity; algunos de los posibles estados son:

  • HttpStatus.OK
  • HttpStatus.NOT_FOUND
  • HttpStatus.CREATED

Documentar API con Swagger

Swagger permite documentar la API, alguna de sus anotaciones son:

  • @Configuration: indica en qué clase estará la configuración de Swagger.
  • @EnableSwagger2: indica que se habilita Swagger en la clase.
  • @Bean
  • @ApiOperation(“description”): indica la descripción de un método del controlador de la API.
  • @ApiResponse(code = int, message = String): tipo de código.
  • @ApiParam(value = String, required = boolean, example = String): permite describir el parámetro del algún método.

Desplegar API

Para desplegar la aplicación autocontenida, basta con generar un archivo .jar o .war. Se debe asignar un número de versión a nuestra aplicación, además se debe asignar el archivo properties – de producción – que se usará. Todo esto se puede realizar desde la ventana de comandos (terminal).

Con este archivo generado se puede usar la aplicación desde la nube u otro computador.

Comentarios