Le client HTTP
Depuis Java 11, un client HTTP moderne est intégré : c'est ainsi qu'un programme consomme une API REST (comme le fera l'appli, ou un test d'intégration de l'API fioul).
import java.net.http.*; import java.net.URI; HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder() .uri(URI.create("https://api.exemple.fr/campagnes")).build(); HttpResponse<String> rep = client.send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(rep.body()); // du JSON
Sérialiser : objets ↔ flux
Sérialiser, c'est transformer un objet en octets/texte pour le stocker ou l'envoyer ; désérialiser, l'inverse. En pratique moderne, on sérialise en JSON (avec Jackson).
// avec Jackson (utilisé par Spring) ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(campagne); // objet → JSON Campagne c = mapper.readValue(json, Campagne.class); // JSON → objet
Sécurité — la sérialisation Java native (
Serializable) est une source classique de failles : on privilégie JSON, et on ne désérialise jamais des données non fiables.🛢️ Sur le projet Fioul Groupé
L'API fioul renvoie ses campagnes en JSON : la sérialisation objet↔JSON (Jackson) est exactement ce que fait Spring pour transformer un Campagne en réponse HTTP, et ce que Flutter parse à l'écran. Comprendre le mécanisme ici éclaire toute la chaîne du projet.
À retenir
- HttpClient (Java 11+) consomme une API REST.
- Sérialiser = objet → flux ; désérialiser = flux → objet.
- En moderne : JSON avec Jackson (objet ↔ JSON).
- Ne jamais désérialiser (Java natif) des données non fiables.