Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

El acrónimo REST significa Transferencia de estado representacional, mientras que API significa Interfaz de programación de aplicaciones. Juntos, se refieren a una API REST. Una API REST es un servicio que transfiere solicitudes y respuestas entre dos sistemas de software, en una arquitectura REST.

La arquitectura REST crea servicios web a los que se puede acceder a través de URL utilizando uno de los cuatro verbos de solicitud: POST, GET, PUT y DELETE. Entonces, podría decir que una API REST es un software que le permite crear, leer, actualizar y eliminar recursos a través de URL.

Puede aprender a crear una API REST con Spring Boot.

Inicializar la aplicación Spring Boot

Lo primero que debes hacer es familiarízate con los conceptos básicos de Spring y configure una aplicación Spring Boot. Sin embargo, deberá modificar las dependencias. Además de la dependencia web, deberá obtener la dependencia de la API persistente de Java (JPA) de Spring Data y el controlador para la base de datos que pretende usar (esta aplicación usará MySQL).

instagram viewer

Para esta API REST, necesitará un controlador, un modelo y un repositorio. Entonces, la API REST tendrá la siguiente estructura de archivos:

Crear el modelo

La primera clase que deberá crear es el modelo de cliente, que almacena la lógica de datos.

paquete com.onlineshopaholics.api.modelo;

importar jakarta.persistencia. Columna;
importar jakarta.persistencia. Entidad;
importar jakarta.persistencia. valor generado;
importar jakarta.persistencia. Tipo de generación;
importar jakarta.persistencia. Identificación;
importar jakarta.persistencia. Mesa;

@Mesa(nombre="cliente")
@Entidad
públicoclaseCliente{
@Identificación
@ValorGenerado(estrategia = TipoGeneración. AUTO)
privado id entero;

@Columna(nombre="Nombre del cliente")
privado Nombre de cadena;

privado Cadena de correo electrónico;

público Entero obtenerId(){
devolver identificación;
}

públicovacíoPon la identificacion(identificador entero){
este.id = id;
}

público Cadena obtenerNombre(){
devolver nombre;
}

públicovacíoescoger un nombre(nombre de cadena){
este.nombre = nombre;
}

público Cadena obtener correo electrónico(){
devolver correo electrónico;
}

públicovacíoestablecer correo electrónico(Cadena de correo electrónico){
este.email = correo electrónico;
}
}

De la clase de cliente anterior, verá que cada cliente tendrá una identificación, un nombre y un correo electrónico. También notará varias anotaciones que sirven para diferentes propósitos.

  • @Entity: declara la clase de cliente como una entidad JPA. Esto significa que JPA utilizará los campos de la clase para crear columnas en una base de datos relacional.
  • @Table: Designa el nombre de la tabla que se asignará a la clase de modelo de cliente.
  • @Id: Designa una propiedad que identificará de forma única a la entidad en la base de datos.
  • @GeneratedValue y @GenerationType: funcionan juntos para especificar una estrategia de generación automática para el campo con el que se asocia. Por lo tanto, el campo de identificación generará automáticamente un valor único cada vez que cree un nuevo cliente.
  • @Column: Designa una propiedad que se asigna a una columna en la base de datos. Por lo tanto, la propiedad de nombre se asignará a una columna de nombre de cliente en la base de datos.

Crear el repositorio

Este repositorio le permitirá interactuar con los datos del cliente en la base de datos.

paquete com.onlineshopaholics.api.repositorio;

importar org.springframework.data.repositorio. Repositorio Crud;
importar com.onlineshopaholics.api.modelo. Cliente;

públicointerfazClienteRepositorioextiendeRepositorio Crud<Cliente, Entero>{}

El repositorio de clientes se extiende Spring's CrudRepository interfaz, pasándole la clase de modelo Customer junto con el tipo de identificador único para la entidad, Integer.

La interfaz de CrudRepository brinda acceso a más de 10 operaciones, incluidos los métodos CRUD genéricos que necesitará para la API REST. Entonces, debido a que CrudRepository ya define los métodos que necesitará, no es necesario declararlos explícitamente en la interfaz de CustomerRepository.

Crear el controlador

El controlador le permite actualizar los datos en su base de datos utilizando el modelo y el repositorio.

paquete com.onlineshopaholics.api.controller;

importar java.util. Opcional;

importar org.springframework.beans.factory.annotation. cableado automático;
importar org.springframework.web.bind.anotación. EliminarMapeo;
importar org.springframework.web.bind.anotación. ObtenerMapeo;
importar org.springframework.web.bind.anotación. variable de ruta;
importar org.springframework.web.bind.anotación. Posmapeo;
importar org.springframework.web.bind.anotación. PonerMapeo;
importar org.springframework.web.bind.anotación. cuerpo de solicitud;
importar org.springframework.web.bind.anotación. Solicitud de mapeo;
importar org.springframework.web.bind.anotación. RequestParam;
importar org.springframework.web.bind.anotación. Cuerpo de respuesta;
importar org.springframework.web.bind.anotación. RestController;

importar com.onlineshopaholics.api.modelo. Cliente;
importar com.onlineshopaholics.api.repositorio. ClienteRepositorio;

@RestController
@RequestMapping("/clientes")
públicoclaseClienteControlador{
@autocableado
privado CustomerRepository clienteRepositorio;

// crear nuevo cliente
@PostMapeo("/agregar")
público Cliente agregarNuevoCliente(@RequestBody Cliente nuevo Cliente){
usuario cliente = nuevo Cliente();
usuario.setName (nuevoCliente.getName());
usuario.setEmail (nuevoCliente.getEmail());
customerRepository.save (usuario);
devolver usuario;
}

// ver todos los clientes
@GetMapping("ver todo")
público@ResponseBodyIterablegetAllCustomers(){
devolver repositoriocliente.findAll();
}

// ver cliente específico
@GetMapping("ver/{id}")
público OpcionalobtenerCliente(@PathVariable ID de entero){
devolver CustomerRepository.findById (id);
}

// actualizar un cliente existente
@PutMapping("/editar/{id}")
público Cadena actualizar( @RequestBody Customer updateCustomer, @PathVariable Integer id){
devolver customerRepository.findById (id)
.map (cliente -> {
cliente.setName (updateCustomer.getName());
cliente.setEmail (updateCustomer.getEmail());
customerRepository.save (cliente);
devolver"¡Los detalles del cliente se han actualizado con éxito!";
}).oElseGet(() -> {
devolver"Este cliente no existe";
});
}

// eliminar cliente
@DeleteMapping("eliminar/{id}")
público Cadena borrar(@PathVariable("identificación")número entero) {
customerRepository.deleteById (id);
devolver"¡El cliente ha sido eliminado con éxito!";
}
}

El controlador anterior equipa la API REST con operaciones CRUD, mediante el uso de cinco de los CrudRepository métodos de interfaz (cada uno asignado a un método específico). El controlador también utiliza varias anotaciones Spring importantes que le permiten realizar sus funciones.

  • @RestController: esta anotación tiene dos propósitos. Marca una clase para el descubrimiento por escaneo de componentes. También le dice a Spring que escriba el valor de retorno para todos los métodos, en esta clase, en el cuerpo de la respuesta.
  • @RequestMapping: define el patrón de solicitud de referencia que manejará el controlador. Entonces, este controlador manejará todas las solicitudes a "/ clientes".
  • @ResponseBody: permite que un método devuelva una entidad completa.
  • @RequestBody: Le permite convertir el cuerpo de la solicitud en un objeto.
  • @RequestParam: le permite aislar una propiedad de un objeto.
  • @PathVariable: le permite asignar un valor de solicitud a un marcador de posición. Mapea el ID dado al método de eliminación con un valor existente en la base de datos.
  • @PostMapping: Le permite crear recursos.
  • @GetMapping: Le permite leer datos de recursos.
  • @PutMapping: Le permite actualizar recursos.
  • @DeleteMapping: Le permite eliminar recursos.

Conexión de la base de datos a su aplicación

Para conectar una base de datos a cualquier aplicación Spring, necesitará usar el aplicación.propiedades archivo en la carpeta de recursos. Este archivo inicialmente está vacío, por lo que puede completarlo con las propiedades apropiadas para la base de datos que desea utilizar. Esta aplicación utilizará una base de datos MySQL, por lo que el archivo application.properties contendrá los siguientes datos:

spring.jpa.hibernate.ddl-auto=actualizar
spring.jpa.open-in-view=false
spring.datasource.url=jdbc: mysql://${MYSQL_HOST: localhost}:3306/onlineshopaholics
spring.datasource.username=raíz
spring.datasource.password=securepw
spring.datasource.driver-class-name=com.mysql.cj.jdbc. Conductor

Los datos anteriores muestran que esta aplicación se conectará a una base de datos MySQL llamada onlineshopaholics, con un nombre de usuario "root" y "securepw" como contraseña. Su próximo paso es crear la base de datos y la tabla de clientes en MySQL.

Creación de solicitudes

Hay muchas herramientas que puede usar para probar su API REST. Postman es una popular herramienta de prueba de API REST, y puede usarlo para probar la API simple que ha creado. Después de crear la tabla MySQL y ejecutar la aplicación Spring, puede iniciar Postman y experimentar con los cuatro verbos de solicitud.

Solicitud POST

Esta solicitud le permitirá crear nuevos clientes utilizando la API REST. Para completar esta solicitud, deberá ir a la sección de encabezados de su solicitud de publicación y crear un nuevo encabezado (Tipo de contenido). Debe establecer el valor de este encabezado en application/json, ya que creará nuevos clientes utilizando JSON.

En el cuerpo de la solicitud, deberá cambiar el tipo a raw e insertar su JSON. Luego deberá insertar la URL de la publicación:

El envío de la solicitud devolverá la siguiente respuesta:

Puede ver que la solicitud fue exitosa y que el nuevo cliente también tiene una identificación.

OBTENER solicitud

Ahora que tiene un cliente, puede verlo con la solicitud de obtención que devuelve todos los clientes:

O cada cliente por id:

Solicitud PUT

Puede actualizar a Janet con un nuevo apellido y correo electrónico.

Borrar petición

También puede eliminar a Janet de la base de datos.

Pruebe su API REST de Spring usando JUnit

Con Spring Boot, puede probar cualquier aplicación (incluidas las API REST) ​​utilizando el archivo de prueba de Spring. Las pruebas de software son importantes para Spring Boot. Cada aplicación Spring inicializada utiliza JUnit para realizar pruebas y le permite enviar solicitudes a sus API REST.