5. Améliorer les points de terminaisons

Précédemment, on a mis en place un module helper, afin de nous aider à exposer une réponse plus complète et agréable aux consommateurs de notre API Rest. Désormais, il nous reste qu’à assembler tout cela, afin d’ajouter un message dans nos réponses JSON :

On ne retourne pas seulement les données attendues, mais également un court message descriptif.

On va donc modifier notre point d’entré app.js, afin d’utiliser notre nouveau module helper :

// ...
const helper = require('./helper.js')
// ...
 
app.get('/api/pokemons/:id', (req, res) => {
  const id = parseInt(req.params.id)
  const pokemon = pokemons.find(pokemon => pokemon.id === id)
  const message = 'Un pokémon a bien été trouvé.'
  res.json(helper.success(message, pokemon))
})
//...

Premièrement, on importe d’abord notre module helper à la ligne 2, et on utilise ensuite la méthode success à la ligne 9, afin de retourner une réponse parfaitement structurée. On lui passe comme convenu 2 paramètres :

  • Le message : C’est le fameux message descriptif qui sera transmis au consommateur de l’API Rest. Dans notre cas, on transmet le message de confirmation Un pokémon a bien été trouvé, que l’on définit à la ligne 8.
  • Les données : En deuxième argument, on transmet les données en tant que telle, à savoir le pokémon correspondant à l’identifiant demandé.

En utilisant simplement la méthode success comme ici, on est capable de retourner une réponse plus complète.  👍

Mais vous commencez à me connaître, on pourrait encore faire mieux… en allégeant un peu plus notre code. L’idée est de récupérer seulement la méthode success, plutôt que le module helper en entier.

Encore une fois, il est possible de réaliser cette petite prouesse grâce à la syntaxe de JavaScript ES6, grâce aux affectations déstructurées, comme ceci dans app.js :

//...
// On extrait uniquement la méthode utilisée, depuis le module.
const { success } = require('./helper.js') 
//...
 
app.get('/api/pokemons/:id', (req, res) => {
  const id = parseInt(req.params.id)
  const pokemon = pokemons.find(pokemon => pokemon.id === id)
  const message = 'Un pokémon a bien été trouvé.'
  // On peut utiliser directement la méthode extraite lors de l'importation. 
  res.json(success(message, pokemon))
})
 
//...

Grâce à la syntaxe des accolades, également appelé affectation déstructurée, nous pouvons récupérer uniquement la méthode success, à la ligne 3. L’intérêt est qu’ensuite nous pouvons utiliser directement la méthode success à la ligne 11, sans devoir appeler tout le module helper comme précédemment.

Vous êtes donc capable de créer des points de terminaisons robustes pour les consommateurs de votre API Rest. Il ne reste plus qu’à pratiquer, c’est parti !