Servicio API REst con Spring Data

Page 1

SPRING FRAMEWORK API REST con Spring Data. Links: https://geeks-mexico.com/2018/01/04/crea-un-api-rest-de-la-forma-mas-simplecon-java-y-spring-data-rest/ https://start.spring.io/ Creamos un Proyecto Nuevo en https://start.spring.io/

En la secciรณn SQL elegimos JPA y PostgreSQL


En la secciรณn WEB elegimos Web y Rest Repositories

Generamos el proyecto


El proyecto usará Maven para la gestión de dependencias y la construcción. La estructura del proyecto debe quedar así:

Abrimos una terminal en este directorio y tecleamos en una consola: mvn clean install mvn eclipse:eclipse Maven se encargará de descargara las librerías necesarias y además hacer un proyecto compatible con el Eclipse IDE.


Abrimos Eclipse: Importamos proyecto Maven existente.




Revisamos dependencias necesarias en el pom.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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.codemonkey</groupId> <artifactId>api-rest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>api-rest-ejemplo</name> <description>Uso de API Rest Spring Data</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>


<project.reporting.outputEncoding>UTF8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </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>

Creamos base de datos y tabla de informaciรณn usando el pgAdmin (de PostgreSQL):


Agregamos valores a la tabla alumno:

INSERT INTO public.alumno(nombre, apellidos, direccion, telefono, email) VALUES ('Zuzanne', 'Waller', 'Tomahawk no. 100', '555-766', 'zuzanewll@gmail.com'),('Yohanan', 'Diaz', 'Toluca, Edo. Mex.', '555-111', 'genaro.amaro@latinmail.com');

Creamos una entity en el paquete com.codemonkey.entity Alumno.java package com.codemonkey.entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Table;


import import import import

javax.persistence.Id; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Column;

@Entity @Table(name="alumno") public class Alumno implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @Column(name = "nombre") private String nombre; @Column(name = "apellidos") private String apellidos; @Column(name = "direccion") private String direccion; @Column(name = "telefono") private String telefono; @Column(name = "email") private String email; public Alumno() {} public Alumno(int id, String nombre, String apellidos, String direccion, String telefono, String email) { super(); this.id = id; this.nombre = nombre; this.apellidos = apellidos; this.direccion = direccion; this.telefono = telefono; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellidos() {


return apellidos; } public void setApellidos(String apellidos) { this.apellidos = apellidos; } public String getDireccion() { return direccion; } public void setDireccion(String direccion) { this.direccion = direccion; } public String getTelefono() { return telefono; } public void setTelefono(String telefono) { this.telefono = telefono; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Alumno [id=" + id + ", nombre=" + nombre + ", apellidos=" + apellidos + ", direccion=" + direccion + ", telefono=" + telefono + ", email=" + email + "]"; }

}

Generamos un archivo application.properties spring.data.rest.basePath=/api #MySQL #spring.datasource.url=jdbc:mysql://localhost:3306/spring_boot_users #spring.datasource.username=root #spring.datasource.password=root #spring.datasource.driver-class-name=com.mysql.jdbc.Driver #POSTGRESQL spring.jpa.generate-ddl=true spring.jpa.show-sql=true spring.datasource.driverClassName=org.postgresql.Driver


spring.datasource.url=jdbc:postgresql://localhost:5432/proyecto spring.datasource.username=postgres spring.datasource.password=5432 #spring.jpa.hibernate.ddl-auto=create-drop spring.jpa.hibernate.ddl-auto=update #spring.jpa.hibernate.ddl-auto=create spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy # JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration) spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

Creamos un Repositorio en com.codemonkey.repository UsuarioRepository.java package com.codemonkey.repository; import org.springframework.data.repository.PagingAndSortingRepository; import com.codemonkey.entity.Alumno;

public interface AlumnoRepository extends PagingAndSortingRepository<Alumno, Integer>{ }

Iniciamos el proyecto desde Eclipse. http://localhost:8080/api/alumnoes Obtenemos lo siguiente:

Abrimos

el

navegador

en



Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.