切换http状态码

Alv*_*vin 3 javascript express

如何根据 http 状态代码执行 switch 语句以返回错误消息,我这样做了:

switch(true){
    case err.status.test(/^4/): // 4xx
       res.fail(err.status, err);
       break;
    case err.status.test(/^5/): // 5xx
       res.error(err.status, err.message, {data: err});
       break;
Run Code Online (Sandbox Code Playgroud)

我的正则表达式做对了吗?

Bar*_*mar 5

test()是一种RegExp方法,所以它应该是:

case /^4/.test(err.status):
Run Code Online (Sandbox Code Playgroud)

我个人认为switch(true) { ... }是一种令人困惑的编码风格。我会把它写成:

switch(Math.floor(err.status/100)) {
    case 4:
       res.fail(err.status, err);
       break;
    case 5:
       res.error(err.status, err.message, {data: err});
       break;
}
Run Code Online (Sandbox Code Playgroud)