Spring Boot – Ejemplo REST

Todos sabemos que en el mundo actual, la mayoría de las aplicaciones web siguen la arquitectura cliente-servidor. La aplicación en sí es la parte del cliente o front-end debajo del capó que necesita para llamar al servidor o al back-end para obtener o guardar los datos. Esta comunicación se realiza mediante el protocolo HTTP. El mismo protocolo es el poder de la web. En el servidor, exponemos el conjunto de servicios a los que se puede acceder a través del protocolo HTTP. Luego, el cliente puede llamar directamente a los servicios enviando la solicitud HTTP. 

Ahora, aquí es donde REST entra en escena. R est significa R epresentation State T ransfer , es básicamente una convención para construir estos servicios HTTP. Por lo tanto, utilizamos un principio de protocolo HTTP simple para brindar soporte para CREAR , LEER , ACTUALIZAR Y ELIMINAR datos. Nos referimos a estas operaciones en conjunto denominadas CRUDoperaciones. En resumen, es un conjunto de reglas que siguen los desarrolladores cuando crean su API. Una de estas reglas establece que debería poder obtener un dato (llamado recurso) cuando se vincula a una URL específica. Implementemos una aplicación RSET y comprendamos el enfoque REST creando un ejemplo en el que simplemente devolvemos los datos del libro en forma de JSON

Descansa con el ejemplo

Configure el proyecto de primavera:

Entonces, primero configuraremos el proyecto Spring en STS (Suite de herramientas Spring) IDE . Cuyas instrucciones se dan a continuación

  • Haga clic en Archivo -> Nuevo -> Proyecto -> Seleccione Proyecto Spring Starter -> Haga clic en Siguiente.
  • Se abrirá un cuadro de diálogo Nuevo donde proporcionará la información relacionada con el proyecto, como el nombre del proyecto, la versión de Java, la versión de Maven, etc.
  • Después de eso, seleccione las dependencias maven requeridas como Spring Web ,   Spring Boot DevTools (Proporciona reinicios rápidos de aplicaciones, LiveReload y configuraciones para una experiencia de desarrollo mejorada).
  • Haga clic en Finalizar.

Estructura del proyecto:

pom.xml:

XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>ex</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ex</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
          
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
  
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
  
</project>

Nota: No es necesario agregar nada a application.properties porque no usamos una base de datos. 

Clase POJO (objeto Java simple y antiguo):

Java

package com.example.demo.modal;
  
public class Book {
  
    private long id;
    private String name;
    private String title;
  
    public Book() {
        super();
    }
    public Book(long id, String name, String title) {
        super();
        this.id = id;
        this.name = name;
        this.title = title;
    }
  
    public long getId() {
        return id;
    }
  
    public void setId(long id) {
        this.id = id;
    }
  
    public String getName() {
        return name;
    }
  
    public void setName(String name) {
        this.name = name;
    }
  
    public String getTitle() {
        return title;
    }
  
    public void setTitle(String title) {
        this.title = title;
    }
  
}

Interfaz de servicio y clase de implementación de servicio

Aquí hemos creado una interfaz llamada BookService que contiene todos los métodos de servicio que nuestra aplicación proporcionará al usuario. Y la clase BookServiceImpl que implementa la interfaz BookService. 

Java

package com.example.demo.service;
  
import java.util.HashSet;
import com.example.demo.modal.Book;
  
public interface BookService {
     HashSet<Book> findAllBook();
     Book findBookByID(long id);
     void addBook(Book b);
     void deleteAllData();
}

Java

package com.example.demo.service;
import java.util.HashSet;
import org.springframework.stereotype.Service;
import com.example.demo.modal.Book;
  
@Service
public class BookServiceImpl implements BookService {
  
    HashSet<Book> bookList = new HashSet<Book>();
    @Override
    public HashSet<Book> findAllBook() {
        if (bookList.isEmpty())
            return null;
        else
            return bookList;
    }
    @Override
    public Book findBookByID(long id) {
        Book book = bookList.stream().filter(b -> b.getId() == id).findAny().orElse(null);
        return book;
    }
    @Override
    public void addBook(Book b) {
        bookList.add(b);
    }
    @Override
    public void deleteAllData() {
        bookList.clear();
    }
}

Controlador de descanso: 

Aquí está la clase ExController donde exponemos todas las API que hemos creado. 

lista de API

  • http://localhost:8080/
    • Para guardar los datos
  • http://localhost:8080/findbyid/2
    • Buscar libro por id
  • http://localhost:8080/buscartodo
    • Encuentra todos los libros
  • http://localhost:8080/eliminar
    • Eliminar todos los libros

Java

package com.example.demo.controller;
  
import java.util.ArrayList;
import java.util.HashSet;
  
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
  
import com.example.demo.modal.Book;
  
import com.example.demo.service.BookServiceImpl;
  
@RestController
public class BookController {
  
    @Autowired
    BookServiceImpl bookServiceImpl;
  
    @PostMapping("/")
    public void addBook(@RequestBody Book book) {
        bookServiceImpl.addBook(book);
    }
  
    @GetMapping("/findall")
    public HashSet<Book> getAllBook() {
        return bookServiceImpl.findAllBook();
    }
  
    @GetMapping("/findbyid/{id}")
    public Book geBookById(@PathVariable long id) {
        return bookServiceImpl.findBookByID(id);
    }
  
    @DeleteMapping("/delete")
    public void deleteBook() {
        bookServiceImpl.deleteAllData();
    }
  
}

ExApplication.java

Para ejecutar la aplicación.

Java

package com.example.demo;
  
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
  
@SpringBootApplication
public class ExApplication {
  
    public static void main(String[] args) {
        SpringApplication.run(ExApplication.class, args);
    }
  
}

Prueba de API en Postman

Publicación traducida automáticamente

Artículo escrito por shubhamp338 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *