如何使用不一致的变量格式切换大小写

时间:2015-06-28 20:53:47

标签: javascript node.js express

switch (req.path)
{
    case "/api/posts": 
        console.log("posts");
    break;

    case "/api/posts/tags/*": // the part * is always changing depending on user input
        console.log("tags");
    break;

    case "/api/best": 
        console.log("best"); 
    break;

    default: 
        console.log("default");
}

req.path给出了我的路径

例如

/api/post/tags/asd,dsfd
/api/post/tags/1
/api/post/tags/12,123

如何尽可能高效地管理?

某些框架提供了类似

的路径解析器
/*

这个和*之后的任何输入都被忽略并视为相同。我很好奇它的内在机制。

2 个答案:

答案 0 :(得分:1)

这样的事情(见jsfiddle):

return

您还可以使用正则表达式。请注意,如果某些输入条件可能相互匹配,则您需要在每个if语句的末尾else if,或者只使用default。完全取决于您寻找的路线。

对于if... else if案例,您可以将所有内容与else以及最终console.log('default')放置switch (req.path) { case "/api/posts": console.log("posts"); break; case req.path.match(/(\/api\/posts\/tags\/)/)[1]: console.log("tags"); break; case "/api/best": console.log("best"); break; default: console.log("default"); } 串在一起。我已将上述解决方案保留得非常小,因此您可以根据需要进行扩展。

输出

output

答案 1 :(得分:1)

您可以将正则表达式放入switch语句中,该语句将处理从该路由分支出来的所有情况。

wait