2. Retourner une réponse JSON

Alors, le premier chantier auquel on doit s’attaquer, c’est celui de retourner des réponses au format JSON, et pas autre chose :

Notre API Rest doit renvoyer des informations au format JSON !

La conversion des données de nos réponses au format JSON se fera en 2 étapes :

  • D’abord, convertir le corps de la réponse en JSON, plutôt que d’utiliser des chaînes de caractères.
  • Ensuite, ajouter un type MIME dans notre réponse HTTP, pour indiquer que cette réponse contient du JSON.

Or pour le moment, ce n’est pas du tout ce que nous avons.

Heureusement, Express est plutôt bien fait, et il va venir à notre rescousse avec une méthode prête à l’emploi, afin de nous permettre de retourner nos réponses au format JSON.

Il s’agit de la méthode json(), tout simplement. Cette simple méthode prend en charge nos deux contraintes, à savoir retourner une réponse au format JSON, et en lui ajoutant le type MIME application/json.

Je vous propose donc de l’utiliser sans tarder, dans notre premier point de terminaison qui retourne un Pokémon en fonction de son identifiant, dans app.js :

// ...
 
app.get('/api/pokemons/:id', (req, res) => {
  const id = parseInt(req.params.id)
  const pokemon = pokemons.find(pokemon => pokemon.id === id)
  res.json(pokemon)
})
 
// ...

À la ligne 6, on retourne une réponse HTTP (res), au format json (json), contenant les informations du pokémon (pokemon). Aussi, vous remarquerez qu’on a plus besoin d’utiliser la méthode send() !

Comme nous pouvons le constater, le code est extrêmement concis et efficace. En fait, il serait même difficile de faire mieux que ça. Par contre, soyez sûr de bien comprendre le rôle de chacun des éléments.

Maintenant, notre API Rest est donc capable de retourner des réponses au format JSON. 

La méthode json() fournie par Express peut prendre en paramètre n’importe quelle donnée JSON valide : objet, tableau, chaîne de caractères, booléens, nombre, ou encore la valeur null.