30.6 Développement d'API REST avec Spring Boot : mappage de routes avec @RestController et @RequestMapping
Le développement d'API REST est un élément fondamental de la programmation Java moderne, et Spring Boot propose des outils puissants pour rendre ce processus efficace et rationalisé. Dans ce chapitre, nous explorerons comment créer des API REST avec Spring Boot, en nous concentrant sur le mappage de routes à l'aide des annotations @RestController
et @RequestMapping
.
Qu'est-ce qu'une API REST ?
Avant de nous lancer dans la mise en œuvre, il est important de comprendre ce qu'est une API REST. REST (Representational State Transfer) est un style architectural pour les systèmes distribués, et une API REST est une interface de programmation d'applications qui adhère à ce style. Il permet la communication entre différents systèmes logiciels sur Internet. Les API REST sont basées sur les ressources et chaque ressource est accessible via des URL uniques. La communication se fait généralement via le protocole HTTP.
Présentation de Spring Boot
Spring Boot est un projet Spring Framework qui vise à simplifier le processus de configuration et de publication d'applications basées sur Spring. Il offre un moyen rapide de créer des applications autonomes qui peuvent être exécutées facilement, réduisant ainsi le besoin de configuration manuelle et optimisant le processus de développement.
@RestController et @RequestMapping
Dans le contexte de Spring Boot, @RestController
est une annotation utilisée pour définir un contrôleur Spring MVC qui dessert les points de terminaison d'une API REST. Cette annotation est une spécialisation de @Controller
et indique que la classe gérera les requêtes Web. Cela garantit également que les données renvoyées par les méthodes sont écrites directement dans le corps de la réponse, généralement au format JSON ou XML.
D'un autre côté, @RequestMapping
est une annotation utilisée pour mapper les requêtes Web à des méthodes spécifiques dans les contrôleurs. Il peut être appliqué à la fois au niveau de la classe et de la méthode et vous permet de configurer des aspects de la requête tels que l'URL, la méthode HTTP (GET, POST, PUT, DELETE, etc.), les en-têtes et les paramètres de la requête.
Créer un contrôleur avec @RestController
Pour créer un contrôleur REST dans Spring Boot, vous commencez par annoter une classe avec @RestController
. Cela transforme la classe en bean Spring et lui permet de gérer les requêtes HTTP.
@RestController
classe publique ExempleController {
// Les méthodes du contrôleur iront ici
}
Définir des itinéraires avec @RequestMapping
Au sein du contrôleur, vous définissez des méthodes pour gérer différents itinéraires. Chaque itinéraire peut être mappé à une méthode en utilisant @RequestMapping
. Vous pouvez spécifier le chemin de routage, la méthode HTTP et d'autres détails de la requête.
@RestController
classe publique ExempleController {
@RequestMapping(value = "/example", méthode = RequestMethod.GET)
chaîne publique getExample() {
renvoyer « Exemple de données » ;
}
}
Dans l'exemple ci-dessus, un GET pour "/example" renverra la chaîne "Example data".
Paramètres d'itinéraire et de demande
Avec Spring Boot, vous pouvez facilement capturer les paramètres d'itinéraire et de requête. Les paramètres de route sont des parties variables du chemin de l'URL et sont annotés avec @PathVariable
. Les paramètres de requête sont des valeurs transmises dans le cadre de la chaîne de requête URL et sont annotées avec @RequestParam
.
@RestController
classe publique ExempleController {
@RequestMapping(value = "/example/{id}", méthode = RequestMethod.GET)
public String getExampleById (@PathVariable("id") ID long) {
// Logique pour renvoyer un exemple basé sur l'identifiant donné
return "Exemple de données avec ID : " + id ;
}
@RequestMapping(value = "/example", méthode = RequestMethod.GET)
public String getExampleWithParam (@RequestParam (name = "name", obligatoire = false) String name) {
// Logique pour renvoyer un exemple basé sur le nom donné
return "Exemple de données avec nom : " + nom ;
}
}
Réponses HTTP et codes d'état
Le contrôle des réponses HTTP et des codes d'état est essentiel pour une API REST. Spring Boot facilite cela avec l'annotation @ResponseStatus
et la classe ResponseEntity
. Avec @ResponseStatus
, vous pouvez définir le code d'état de la réponse directement dans la méthode du contrôleur. Avec ResponseEntity
, vous avez un contrôle plus précis sur la réponse, en pouvant définir les en-têtes, le corps et le code d'état.
@RestController
classe publique ExempleController {
@RequestMapping(value = "/example", méthode = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void addExample (@RequestBody Exemple exemple) {
// Logique pour ajouter un nouvel exemple
}
@RequestMapping(value = "/example/{id}", méthode = RequestMethod.PUT)
public ResponseEntity<String> updateExample (@PathVariable ("id") ID long, exemple @RequestBody) {
// Logique de mise à jour d'un exemple existant
return ResponseEntity.ok("Exemple mis à jour avec succès");
}
}
Conclusion
Le mappage d'itinéraires avec @RestController
et @RequestMapping
dans Spring Boot est une approche puissante et flexible pour développer des API REST. Avec ces annotations, vous pouvez créer des contrôleurs qui répondent à différents types de requêtes HTTP, gèrent les paramètres efficacement et contrôlent les réponses avec élégance. En maîtrisant ces concepts, vous serez bien équipé pour créer des API robustes et évolutives en Java.