Comment utiliser Spring RESTTemplate pour envoyer des données dans une requête POST ?

Le framework Spring est utilisé pour créer une grande variété d'applications dans le langage Java. Il fournit un très grand nombre d'API afin de faciliter le développement. Parmi ces API, il existe "RestTemplate" qui correspond au client HTTP de Spring. Il permet d'envoyer et de récupérer des données via des requêtes HTTP. Pour créer une requête POST, il est nécessaire de créer une requête HTTP qui contient au minimum un en-tête ou un corps.

Pour créer l'en-tête de la requête, il faut faire appel à la classe HttpHeaders. Pour envoyer des données avec la méthode POST, on définit le type d'encodage comme étant celui des formulaires. La requête sera ainsi structurée de la même manière qu'en validant un formulaire.

HttpHeaders entete = new HttpHeaders();
entete.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

On peut ensuite préparer ses paramètres. Il faut les inclure dans un objet implémentant l'interface Map. Nous allons utiliser ici la classe "LinkedMultiValueMap". Fournie avec le framework Spring, elle permet de stocker plusieurs valeurs correspondant à la même clé.

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
map.add("prenom", "Marc");
map.add("nom", "Dupont");
map.add("email", "marc.dupont@example.fr");
map.add("email", "marc.dupont.pro@monsite.fr");

L'étape suivante consiste à créer la requête HTTP. Elle est représentée par la classe "HttpEntity". Il faut préciser dans le type de la classe le type de l'objet qui stocke les données. En paramètre, le constructeur a besoin de l'objet stockant les données, suivant les en-têtes.

HttpEntity<MultiValueMap<String, String>> requeteHttp = new HttpEntity<MultiValueMap<String, String>>(map, entete);

Il ne reste plus qu'à appeler la méthode "postForEntity" qui va envoyer la requête et obtenir une réponse.

ResponseEntity<String> reponse = restTemplate.postForEntity(urlAPI, requete , String.class);

Java