Express.JS:如何按名称而不是数字设置响应状态?

mik*_*ana 9 http magic-numbers http-status-codes node.js express

好的,每个人都知道200没关系,找不到404.但是对于永久与临时重定向或需要付款或其他更奇特的HTTP错误代码之类的东西,最好做以下事情:

response.status('REQUEST_ENTITY_TOO_LARGE');
Run Code Online (Sandbox Code Playgroud)

而不是仅仅使用一般被认为是不好的魔术数字.当然,我可以在某个对象中有413:'REQUEST_ENTITY_TOO_LARGE',但是Express已经有了状态代码的副本 - >名称映射,我宁愿不重复它.

如何在Express JS中按名称指定响应状态?

编辑:感谢@Akshat指出http.STATUS_CODES.阐述他的答案,因为价值观本身是独一无二的,人们可以运行:

   var statusCodeByName = {};
   for ( var number in http.STATUS_CODES ) {
     statusCodeByName[http.STATUS_CODES[number]] = number
   }
Run Code Online (Sandbox Code Playgroud)

这允许一个人:

  > statusCodeByName['Request Entity Too Large']
  '413'
Run Code Online (Sandbox Code Playgroud)

sto*_*one 11

有一个Node模块就是为了这个目的:http-status-codes.

https://www.npmjs.org/package/http-status-codes

这是文档说的内容:

安装

npm install http-status-codes

用法

var HttpStatus = require('http-status-codes');

response.send(HttpStatus.OK);
response.send(
    HttpStatus.INTERNAL_SERVER_ERROR, 
    { error: HttpStatus.getStatusText(HttpStatus.INTERNAL_SERVER_ERROR) }
);
Run Code Online (Sandbox Code Playgroud)