【发布时间】:2015-07-09 15:12:12
【问题描述】:
如果我正在为应用程序创建一个带有 express 的 REST api,据我所知,路由定义的顺序很重要。例如,如果我按以下顺序编写路线:
app.get('/users/:username', user.get);
app.get('/users/list', user.listAll);
然后 user.listAll 永远无法到达,当向“/users/list”发出请求时,服务器会将“list”分配给用户名参数。所以很明显你想要颠倒这些路由的声明顺序。但是在这里,如果用户使用用户名“list”创建帐户,我们会遇到同样的问题,对吧?
那么如何防止用户使用“关键字”创建名称,其中关键字在此处定义为与 api 路由冲突的字符串。
我可以想到两种方法,但似乎都不令人满意。首先,您可以保留与每个用户名创建进行比较的字符串黑名单。但维持这将是一场噩梦。第二,只需在数据库中预先创建这些用户(只要用户名是唯一的)。这种看起来有点老套,但我想不出很多反对它的论据。
这个问题有简单的解决办法吗?
【问题讨论】: