Je travaille sur une application web à grande échelle, et dans le projet je développe une application REST pour les clients externes. Je pense que cette question n'a pas grand chose à voir avec la technologie spécifique que j'utilise, mais juste au cas où - c'est Django.Gestion des exceptions backend pour l'application REST - devrions-nous retourner l'erreur 4XX ou 200 avec la marque d'erreur
Nous avons une convention avec l'équipe de développement qui REPOS les ressources retournent toujours un objet standard JSON de type
{'success': <value>,
'object': <value>
'error_msg': <value>,
}
ainsi que l'état (200, 201, 403, etc ....)
Exemples de mise en œuvre de Django:
return Response({'success': true,
'object': ...,
'error_msg': ...},
status=status.HTTP_200_OK)
le paramètre success
est affecté true
pour un déploiement réussi de la ressource, et false
sinon.
Maintenant, la question entière se trouve ici dans ce qui devrait être passé dans status
paramètre dans les cas où quelque chose de mal se passe - code 4XX approprié ou 200 ?. L'équipe de développement suggère de TOUJOURS utiliser HTTP_200_OK
, simplement si quelque chose de mal s'est passé, il suffit d'attribuer la valeur false à success
. Le error_msg
contiendra un message d'erreur détaillé en cas d'exception.
Ainsi, les deux alternatives parmi lesquelles je ne peux pas choisir le bon regard comme celui-ci
return Response({'success': false,
'object': ...,
'error_msg': 'Details regarding the error'},
status=status.HTTP_400_BAD_REQUEST)
vs:
return Response({'success': false,
'object': ...,
'error_msg': 'Details regarding the error'},
status=status.HTTP_200_OK)
(dans les deux cas success
sera égal à false
Ainsi, dans les deux. cas le développeur saura que quelque chose s'est mal passé en regardant success
sans avoir à vérifier status
)
Cependant, l'existence même de différents error codes me laisse avec un doute désagréable qu'il me manque quelque chose sur pourquoi les gens ont mis au point différents codes d'erreur. Et dans quelles situations mon projet peut rencontrer des problèmes s'il renvoie toujours le même code d'état. Après avoir lu des tonnes de matériaux, je n'ai aucune explication matérielle pourquoi spécifier des codes d'état d'erreur appropriés pourrait surpasser l'approche de retour 200 statut.