7. Supprimer un pokémon

Parmi toutes les opérations CRUD existantes, il n’en reste qu’une que nous n’avons pas encore implémenté. Et nous ne comptons pas en rester là !

Bien sûr, nous faisons référence à la suppression d’un pokémon.

Pour cela, nous allons devoir utiliser l’opération HTTP nommée DELETE et mettre à jour la liste de tous les pokémons dans la foulée, en retirant le pokémon supprimé.

Notre mission ne semble donc pas inatteignable, loin de là.

Ajoutons donc le point de terminaison manquant pour supprimer un pokémon, dans le point d’entrée de notre API Rest app.js :

app.delete('/api/pokemons/:id', (req, res) => {
  const id = parseInt(req.params.id)
  const pokemonDeleted = pokemons.find(pokemon => pokemon.id === id)
  pokemons = pokemons.filter(pokemon => pokemon.id !== id)
  const message = `Le pokémon ${pokemonDeleted.name} a bien été supprimé.`
  res.json(success(message, pokemonDeleted))
});

Dans ce endpoint, on se contente de supprimer le pokémon demandé, grâce à son identifiant passé en paramètre.

On se sert pour cela de la méthode JavaScript native filter, à la ligne 4. On obtient en retour une nouvelle liste de tous les pokémons, mais sans le pokémon supprimé, simple et efficace.  👍

Par contre, j’attire votre attention sur une petite subtilité, concernant les données renvoyées par notre endpoint. On remarque que l’on retourne le pokémon supprimé à nos clients.

Alors, ce n’est pas une obligation en soi, on pourrait retourner simplement un message de confirmation indiquant que le pokémon n°X a bien été supprimé. Mais rappelez-vous que l’on juge une API Rest par la qualité de ses réponses, et on ne pourra jamais vous reprochez de « trop en faire ».

De plus, en tant que consommateur d’API Rest, c’est tout de même plus agréable de voir s’afficher un récapitulatif complet de la ressource que je viens de supprimer. Bref, je vous encourage à faire de même.

Voilà, nous avons mis en place toutes les opérations CRUD existantes pour une API Rest. Il ne nous reste plus qu’à vérifier que tout fonctionne correctement. Mais pour le moment, on a fini. Félicitations à vous !

Dans une API Rest, les collections de ressources sont aussi des ressources. Pour être plus concret, si vous appelez la méthode DELETE sur l’URL /users/1, vous supprimerez un utilisateur. Pourquoi pas. Mais si vous appelez cette même méthode sur l’URL /users, alors vous retirez TOUS les utilisateurs. Il faut que nous soyons vigilant par rapport à ça !