Bonjour, je m'appelle Josh Gardino, et dans ces leçons, je vais vous montrer comment gérer les erreurs et tester les API REST. Rappelez-vous que les codes d'état de réponse HTTP sont divisés en plusieurs groupes. Les codes d'état compris entre 400 et 500 sont considérés comme des erreurs. Cependant, la différence critique est que les codes d'état commençant par quatre sont des erreurs client et les codes d'état commençant par cinq sont des erreurs de serveur. Les erreurs client seraient des erreurs liées à la demande elle-même. La requête peut contenir du JSON mal formaté, l'accès au chemin demandé était interdit, la ressource demandée est introuvable, et plus encore. Lorsque des erreurs client se produisent, il est important que le serveur réponde avec le bon code d'état de la série 400. Cependant, en conservant tous les détails à propos de l'erreur client n'est normalement pas nécessaire côté serveur. Le client doit être en mesure de résoudre le problème et envoyer une nouvelle demande. Plus préoccupant côté serveur sont les codes d'erreur du serveur, et ce sont ceux qui commencent par cinq. Bien qu'il existe de nombreux codes de réponse d'erreur de serveur, de loin, le plus important et le plus pertinent est 500. 500 indique une erreur de serveur interne pour une condition inattendue côté serveur, ce qui signifie qu'une erreur s'est produite. Le code d'état 500 est destiné être une réponse fourre-tout générique. Cependant, c'est généralement le seul type du code d'erreur côté serveur que le code côté serveur de l'API REST doit gérer. D'autres codes d'erreur côté serveur peuvent être rencontrés par un client, comme 503 indiquant que le serveur n'est pas prêt. Mais ces types de réponses sont généralement envoyés par une passerelle API et non par l'application elle-même. Nous allons jeter un coup d'oeil au Department of Motor Vehicles API de Postman. Voici le point de terminaison v1/drivers GET et lorsque je clique sur Envoyer, un code d'état 200 est renvoyé et une liste de tous les pilotes de la base de données. Voyons maintenant à quoi cela ressemble dans le code source. Voici le gestionnaire de la méthode GET. Il effectue une requête de sélection sur la base de données et renvoie toutes les données. Cela fonctionne bien si aucune erreur n'est rencontrée. Cependant, forçons une erreur à se produire. À la ligne 12, je vais entrer un code invalide. Redémarrons le serveur et revenons à Postman. Je vais cliquer sur envoyer et comme vous pouvez le voir, Je n'ai pas reçu de code d'état ni aucun type de réponse. Postman affiche une erreur ECONNRESET. Cela signifie que le serveur n'a pas répondu avec tout ce que Postman pourrait traiter. Revenons à l'endroit où le serveur est en cours d'exécution. Mon serveur local a détecté avec précision l'erreur xyz et affiché tous les détails dans la fenêtre de la console. Ces détails sont appelés une trace de pile et ils sont très importants à des fins de débogage. La première ligne de la sortie d'erreur me dit qu'il s'agissait d'une erreur de référence parce que le serveur n'a pas compris ce qu'est xyz, donc l'erreur est capturée correctement mais le client n'a aucune idée de ce qui s'est passé. Le serveur pourrait être en panne, il pourrait y avoir un problème de réseau côté client, il peut y avoir une erreur côté serveur mais le client n'a aucun moyen de savoir ce qui s'est passé et c'est parce que ce code n'exécute aucun type de la gestion des erreurs. Lorsque l'erreur se produit, le serveur détecte que quelque chose s'est mal passé mais aucune réponse n'est envoyée car pour la méthode GET, le seul type de réponse envoyé est un 200. Maintenant, ajoutons un peu de gestion des erreurs à l'application Node.js Express avec des instructions try et catch. Maintenant, l'erreur est gérée et toutes les erreurs seront rattrapées à la ligne 16. Sur la ligne 17, j'envoie un statut de 500 au client. Revenons à Postman et essayons ceci. Maintenant, quand j'envoie la demande, Je reçois une réponse et elle a un code d'état 500 indiquant une erreur de serveur interne. Le client ne sait pas exactement ce qui s'est passé côté serveur, mais il a beaucoup plus d'informations qu'avec la demande précédente. Il est certainement possible d'envoyer les détails complets de l'erreur au client, avec le code d'état d'erreur interne du serveur 500 mais c'est certainement problématique. Plus important encore, cela expose les détails internes à propos de l'API et cela présente un problème de sécurité potentiellement grave mais aussi, ces informations ne sont pas utiles pour le client, il n'y a donc aucune raison de l'envoyer mais cela ne signifie pas que le serveur doit renvoyer un message de réponse générique du serveur. Revenons au code et ajoutez un message d'erreur convivial. Maintenant, lorsque nous envoyons cette demande, nous recevons toujours un 500 mais avec un message d'erreur personnalisé. Une autre raison d'utiliser un message de code d'état 500 personnalisé est de fournir au client un suivi ou ID de corrélation que le personnel côté client de l'API pourrait partager avec le personnel côté serveur afin d'effectuer un dépannage détaillé. Merci d'avoir regardé. Restez à l'écoute pour la prochaine leçon où je vais vous montrer comment utiliser les tests automatisés pour les requêtes GET dans l'API REST.