Express.JS: comment puis-je définir le statut de la réponse par nom, plutôt que le nombre?
OK, tout le monde sait 200 est OK et 404 n'est pas trouvé. Mais je pour des choses comme permanent vs redirection temporaire, ou de paiement, ou d'autres plus exotiques codes d'erreur HTTP, il peut être préférable de faire quelque chose comme:
response.status('REQUEST_ENTITY_TOO_LARGE');
Plutôt que de simplement utiliser un nombre magique qui est généralement considéré comme une mauvaise pratique. Je pourrais, bien sûr, ont 413:'REQUEST_ENTITY_TOO_LARGE" dans un objet, mais l'Express a déjà une copie du code d'état -> les mappages de nom et je préfère ne pas le dupliquer.
Comment puis-je spécifier un état de la réponse donnée par nom dans l'Express JS?
Modifier: merci @Akshat pour souligner http.STATUS_CODES. L'élaboration de sa réponse, puisque les valeurs sont eux-mêmes unique, on peut exécuter:
var statusCodeByName = {};
for ( var number in http.STATUS_CODES ) {
statusCodeByName[http.STATUS_CODES[number]] = number
}
Qui permet de:
> statusCodeByName['Request Entity Too Large']
'413'
De toute évidence, nous allons avoir besoin d'envoyer un certain nombre sur le fil, qui est requis par la RFC2616. Mon intérêt à être en mesure de préciser le statut de nom (évidemment encore de l'envoyer par numéro) est pour des raisons de lisibilité.
OriginalL'auteur mikemaccana | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
Il y a un Nœud module juste pour ce but: http status codes.
https://www.npmjs.org/package/http-status-codes
Voici ce que dit la documentation:
Installation
npm install http-status-codes
Utilisation
OriginalL'auteur stone
Codes de réponse HTTP ne sont pas des numéros de magie; ils sont les spec. Le texte descriptif est juste un rappel utile, mais le protocole lui-même s'appuie sur les codes d'état, et le noyau sont très vaut la peine d'apprendre. Deux pensées. Vous pouvez certainement créer une constante en haut de votre fichier et de le faire:
Cependant, la plupart des Api REST mettre en œuvre les réponses suivantes:
Enfin, dans le cas où c'est utile, je vais partager notre code pour le rendu des pages d'erreur personnalisées:
OriginalL'auteur dankohn
Ce n'est pas possible, sauf si vous êtes prêt à changer le code source vous-même. Jetez un oeil à la la mise en œuvre de
res.send
Si vous fournissez une chaîne de caractères comme argument juste l'interprète comme html et envoie la réponse que 200.
Je pense que la raison express utilise des numéros de codes d'état HTTP est parce que le nœud lui-même utilise des numéros de clés de l'objet pour http.STATUS_CODES
OriginalL'auteur Akshat Jiwan Sharma