在expressjs中接受并解析请求

时间:2015-07-25 05:02:07

标签: node.js express

我正在使用expressjs,我希望从这个URL获取请求对象

http://www.thedomain.com/membername/category/item?item=abc

在服务器端。我正在尝试使用

// app.js
var express = require('express');
var routes = require('./routes/index');
var app = express();
app.use('/*', routes);

在'./routes/index'中:

//'./routes/index''./routes/index'
var express = require('express');
var config = require('../config');
var router = express.Router();
var url = require('url');

/* GET category page. */
router.get('/category', function(req, res, next) {
    console.log(' pathname: ',url.parse(req.url).pathname)
    res.render('index', {
        title: url.parse(req.url).pathname
        });
});

实际上,我无法获得会员名称的价值

我想知道如何在类别路由器的查询字符串中的进程项值之前获取membername的值。我还想知道如何编写一个正则表达式,接受路由器的所有成员名值,该路由器作为预处理模块保留在类别路由器的前面。

感谢您的所有评论和回答

2 个答案:

答案 0 :(得分:1)

req.get('/:memberName/category/item', function(req, res, next) {
    // do whatever you want with req.prams.memberName here...
    next();
});

req.get('/:memberName/category/item', function(req, res, next) {
    // now do whatever you want with req.query.item here...
});

答案 1 :(得分:1)

由于您建议您只想限制字母和数字(也许也是_),请使用正则表达式:

req.get('/\w+/category/item', function(req, res, next) {
    // Access membername via req.params[0]
});

我对Express路线和正则表达式运气不好,但我相信Express 4.0中已经解决了这个问题。