Meilleures pratiques pour renvoyer les erreurs dans l'API Web ASP.NET
Lors du traitement des erreurs dans les API Web ASP.NET, il existe deux principaux approches : renvoyer les erreurs immédiatement ou accumuler les erreurs et les renvoyer collectivement. Cet article examine les avantages et les inconvénients de chaque approche et propose les meilleures pratiques recommandées.
1. Renvoi immédiat des erreurs
Dans la première approche, les erreurs sont renvoyées immédiatement à l'aide de HttpResponseExceptions. Cela convient lorsque :
Exemple :
public void Post(Customer customer) { if (string.IsNullOrEmpty(customer.Name)) { throw new HttpResponseException("Customer Name cannot be empty", HttpStatusCode.BadRequest); } if (customer.Accounts.Count == 0) { throw new HttpResponseException("Customer does not have any account", HttpStatusCode.BadRequest); } }
2. Accumulation et renvoi des erreurs
Dans la deuxième approche, les erreurs sont accumulées et renvoyées collectivement à la fin de l'action. Ceci est recommandé lorsque :
Exemple :
public void Post(Customer customer) { List<string> errors = new List<string>(); if (string.IsNullOrEmpty(customer.Name)) { errors.Add("Customer Name cannot be empty"); } if (customer.Accounts.Count == 0) { errors.Add("Customer does not have any account"); } var responseMessage = new HttpResponseMessage<List<string>>(errors, HttpStatusCode.BadRequest); throw new HttpResponseException(responseMessage); }
Meilleures pratiques
Bien que les deux approches aient leurs mérites, la La meilleure pratique recommandée est de renvoyer les erreurs immédiatement. Ceci :
Cependant, pour les erreurs non fatales qui font partie d'une étape de validation ou de traitement plus large, accumuler les erreurs et les renvoyer collectivement peut être plus approprié.
Mises à jour
Cet article a été mis à jour au fil du temps avec des informations provenant d'articles de blog et des changements dans les meilleures pratiques :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!