View on GitHub

lp4-2019

Création d’une API REST avec Spring pour retourner du JSON

REST service large view

Notre serveur d’application attend les requêtes des clients (navigateurs ou autres). Le serveur renvoie une réponse au format JSON.

Principe de fonctionnement

REST service components

Le serveur d’application analyse les requêtes, les traite, puis transforme la réponse pour la renvoyer au format HTTP.

Exemple simple avec un objet Pilote

Faites comme pour les projets précédents, utilisez SpringInitializr et créez un projet web springdemo03.

Créer la classe Pilote et copier le code ci-dessous

package fr.bouget.model;

import java.io.Serializable;

public class Pilote implements Serializable {
	private static final long serialVersionUID = 1L;

	private int id;
	private String nom;
	private String site;

	public Pilote() {super();}

	/**
	 * Constructeur
	 * @param id
	 * @param nom
	 * @param site
	 */
	public Pilote(int id, String nom, String site) {
		super();
		this.id = id;
		this.nom = nom;
		this.site = site;
	}


	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the nom
	 */
	public String getNom() {
		return nom;
	}

	/**
	 * @param nom the nom to set
	 */
	public void setNom(String nom) {
		this.nom = nom.toUpperCase();
	}

	/**
	 * @return the site
	 */
	public String getSite() {
		return site;
	}

	/**
	 * @param site the site to set
	 */
	public void setSite(String site) {
		this.site = site.toUpperCase();;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Pilote : "+this.getId()+ " "+this.getNom()+ " "+this.getSite();
	}
}

Voici la classe Controller :

/**
 * 
 */
package fr.bouget.spring.restapi.springdemo03.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import fr.bouget.spring.restapi.springdemo03.bean.Pilote;

/**
 * @author Philippe
 *
 */
@RestController
@RequestMapping("/demo3")
public class PiloteController  {
	
	private List<Pilote> liste = new ArrayList<>();
	
	public PiloteController()
	{
		Pilote p = new Pilote(1,"Josselin","Montreuil");
		Pilote p2 = new Pilote(2,"Philippe", "Paris");
		Pilote p3 = new Pilote(3, "Anissa", "Marseille");
		this.liste.add(p);
		this.liste.add(p2);
		this.liste.add(p3);
	}
	
	@GetMapping("/pilotes")
	public List<Pilote> getAll()
	{
		return this.liste;
		
	}

}

Cette classe implémente une méthode getAll() qui retourne une liste contenant une liste de 3 pilotes codés en dur dans le constructeur du Contrôleur (la prochaine étape consistera à récuperer des données dans une base MySQL). L’annotation @GetMapping(“/pilotes”) va associer la méthode getAll() au point d’entrée (l’url) : /pilotes

Tester votre API Web JSON

Et voici ce que vous devez obtenir dans votre navigateur :

[

    {
        "id": 1,
        "nom": "Josselin",
        "site": "Montreuil"
    },
    {
        "id": 2,
        "nom": "Philippe",
        "site": "Paris"
    },
    {
        "id": 3,
        "nom": "Anissa",
        "site": "Marseille"
    }

]

Conclusion