【问题标题】:Accept and parsing request in expressjs在 expressjs 中接受和解析请求
【发布时间】:2015-10-15 20:53:01
【问题描述】:

我正在使用 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 的值

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

感谢您的所有评论和回答

【问题讨论】:

  • 你的会员名字是什么样的?它们只是字母吗?字母数字?数字?
  • 我们不是来为您实现您的要求。编写您自己的代码,当您对自己所做的事情有具体问题时再回来。
  • 可能是字母和数字...@remus
  • @Tomalak...我有自己的代码...要更新

标签: node.js express


【解决方案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...
});

【讨论】:

  • 非常感谢@jmar777 非常简单和聪明...但是我如何编写路由器在将其发送到其他路由器之前接受所有memberName 请求...???
  • 嘿,刚刚更新了我的答案。这是否更接近您的目标?
  • 是的...非常接近..但我也在寻找美化路由器结构的方法。
  • 非常感谢@jmar777
【解决方案2】:

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

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

我在 Express 路由和正则表达式方面运气不佳,但我相信 Express 4.0 中已经解决了这个问题。

【讨论】:

  • 谢谢 remus...我也是...:D
猜你喜欢
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
相关资源
最近更新 更多