0% ont trouvé ce document utile (0 vote)
5 vues7 pages

Création d'une API REST avec Spring

Transféré par

chktaha0
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues7 pages

Création d'une API REST avec Spring

Transféré par

chktaha0
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

University of Batna 2 Computer Science Department M1:ISIDS

2023/2024 Course:CDSI

TP 4: Rest API avec Spring

L’idée est d’offrir une suite d’outils numériques (logiciel, application web, voire application
mobile) prête à l’emploi.

Voici l’architecture imaginée :

Structure de l’application :

Couche Objectif
controller Réceptionner la requête et fournir la réponse
service Exécuter les traitements métiers
repository Communiquer avec la source de données
model Contenir les objets métiers

Vous allez réaliser une API. Rappelons-le, une API est un programme qui a pour vocation de
communiquer avec d’autres programmes. L’idée étant de gérer des employés, l’API devra donc
offrir un CRUD (Create, Read, Update, Delete) pour les données des employés.

Les données seront dans une base de données H2 : H2 est une base de données relationnelle Java très
légère, qui par défaut fonctionne en “in memory”. Cela signifie qu’au démarrage du programme, la
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI
structure de la base est construite ; et lorsque le programme s’arrête, le contenu de la base de données
est supprimé. On ne conserve donc pas les modifications apportées d’une exécution à l’autre du
programme.

Notre API devra donc exposer des endpoints correspondant aux actions du CRUD, et communiquer
avec la base de données pour récupérer ou modifier les informations des employés. À noter que l’API
sera de type REST.

1. Créez des packages

voici le résultat avec une capture d’écran :

Définissez les propriétés

[Link]=api

[Link]=9000
[Link]=error
[Link]=info
[Link].h2=info
[Link]=info
[Link]=true

Créez la base de donné H2

Concernant la console H2, une fois l’application démarrée, vous pouvez aller sur l’URL
“[Link] Une fenêtre de login s’ouvre, et il est nécessaire d’indiquer l’URL
Jdbc (qui change à chaque démarrage de l’application).

Dans votre console, vous aurez une ligne qui doit ressembler à la suivante :

“H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:b59feadd-5612-45fe-


bd1c-3b62db66ea8a'”.
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI

Récupérez l’URL JDBC (en l'occurrence jdbc:h2:mem:b59feadd-5612-45fe-bd1c-


3b62db66ea8a'), saisissez dans le formulaire comme ci-dessous, puis “Connect”. Le
username par défaut est bien “sa”, et le password par défaut est vide.

Créez un contrôleur REST pour gérer vos données


1. Modélisez la table en entité Java

package [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

@Data
@Entity
@Table(name = "employees")
public class Employee {

@Id
@GeneratedValue(strategy = [Link])
private Long id;

@Column(name="first_name")
private String firstName;

@Column(name="last_name")
private String lastName;

private String mail;

private String password;

}
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI

Implémentez la communication entre l’application et la base de données :

package [Link];

import [Link];
import [Link];

import [Link];

@Repository
public interface EmployeeRepository extends CrudRepository<Employee, Long> {

CrudRepository est une interface fournie par Spring. Elle fournit des méthodes pour manipuler votre
entité. Elle utilise la généricité pour que son code soit applicable à n’importe quelle entité, d’où la
syntaxe “CrudRepository<Employee, Long>”

Créez un service métier

La couche service est également un pont entre le controller et le repository. De ce fait, nous allons
créer une classe EmployeeService dont voici le code :

package [Link];

import [Link];

import [Link];
import [Link];
import [Link];
import [Link];

import [Link];

@Data
@Service
public class EmployeeService {

@Autowired
private EmployeeRepository employeeRepository;

public Optional<Employee> getEmployee(final Long id) {


return [Link](id);
}

public Iterable<Employee> getEmployees() {


return [Link]();
}

public void deleteEmployee(final Long id) {


[Link](id);
}

public Employee saveEmployee(Employee employee) {


Employee savedEmployee = [Link](employee);
return savedEmployee;
}

}
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI

Exposez les endpoints REST


package [Link];

import [Link];

import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

import [Link];
import [Link];

@RestController
public class EmployeeController {

@Autowired
private EmployeeService employeeService;

@PostMapping("/employee")
public Employee createEmployee(@RequestBody Employee employee) {
return [Link](employee);
}

@GetMapping("/employee/{id}")
public Employee getEmployee(@PathVariable("id") final Long id) {
Optional<Employee> employee = [Link](id);
if([Link]()) {
return [Link]();
} else {
return null;
}
}

@GetMapping("/employees")
public Iterable<Employee> getEmployees() {
return [Link]();
}

}
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI

/**
* Update - Update an existing employee
* @param id - The id of the employee to update
* @param employee - The employee object updated
* @return
*/
@PutMapping("/employee/{id}")
public Employee updateEmployee(@PathVariable("id") final Long id,
@RequestBody Employee employee) {
Optional<Employee> e = [Link](id);
if([Link]()) {
Employee currentEmployee = [Link]();

String firstName = [Link]();


if(firstName != null) {
[Link](firstName);
}
String lastName = [Link]();
if(lastName != null) {
[Link](lastName);;
}
String mail = [Link]();
if(mail != null) {
[Link](mail);
}
String password = [Link]();
if(password != null) {
[Link](password);;
}
[Link](currentEmployee);
return currentEmployee;
} else {
return null;
}
}

/**
* Delete - Delete an employee
* @param id - The id of the employee to delete
*/
@DeleteMapping("/employee/{id}")
public void deleteEmployee(@PathVariable("id") final Long id) {
[Link](id);
}

}
University of Batna 2 Computer Science Department M1:ISIDS
2023/2024 Course:CDSI

Les annotation Spring pour le service REST

Annotation Type Objectif


HTTP
@GetMapping GET Pour la lecture de données.
@PostMapping POST Pour l’envoi de données. Cela sera utilisé par exemple
pour créer un nouvel élément.
@PatchMapping PATCH Pour la mise à jour partielle de l’élément envoyé.
@PutMapping PUT Pour le remplacement complet de l’élément envoyé.
@DeleteMapping DELETE Pour la suppression de l’élément envoyé.
@RequestMapping Intègre tous les types HTTP. Le type souhaité est indiqué
comme attribut de l’annotation. Exemple :

@RequestMapping(method = [Link])

Vous aimerez peut-être aussi