1

目前我在字符串中有如下状态:

var states = 'AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL...';

我想捕捉

mydomain.com/CA/more-stuff

分成两个单独的参数。第一个带有状态信息,第二个带有附加信息。我知道如何获取附加信息:

app.get('/' ??? + '/:additional', ...);

如何捕获状态信息?

4

2 回答 2

2

如果将其定义为路径中的参数...

app.get('/:stateabbr/:additional', ...);

您可以使用以下方法对其进行验证app.param()

app.param('stateabbr', function (req, res, next, abbr) {
    var stateAbbrs = /AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|../i

    if (stateAbbrs.test(abbr)) {
        next()
    } else {
        next(new Error('Unrecognized State abbreviation.'));
    }
});
于 2012-08-27T10:13:20.267 回答
1

试试这个

var states = 'AL|AK|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL...';
app.get('/:state('+ states + ')/:additional', function(req,res,next){
    res.send('state:'+req.params.state+',additional:'+req.params.additional);
})

我已经对其进行了测试,它应该可以按照您的要求工作:)

于 2013-04-22T00:43:29.587 回答