首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reroute url _ Nodejs _ Express

Reroute url _ Nodejs _ Express
EN

Stack Overflow用户
提问于 2016-10-03 13:27:33
回答 2查看 160关注 0票数 0

我希望根据请求中的查询参数将传入的请求重定向到不同的端点。

例如,

http://localhost:9000/?category=xyz&param1=...&param2=...

category值可以是abc,ijk,pqr,xyz之一。

根据category值,应该将请求重定向到"/abc“、"/ijk”、"/pqr“、"/xyz”中的一个保持其余参数。

因此,上面的请求应该成为/xyz/?param1=...&param2=...

我是Nodejs/express的新手,我认为最好基于category值创建不同的路径来模块化代码。

处理这类个案的理想方法是甚麽?

EN

回答 2

Stack Overflow用户

发布于 2016-10-03 13:43:03

为这些值[abc, ijk, pqr, xyz]中的每个值创建一个路由。为了处理不同的查询参数(?category=xyz),创建一个中间件来转换请求url:

代码语言:javascript
复制
app.use(function(req, res, next) {
  // adding category in the url path will redirect to the 
  // correct route after calling next function
  req.url = "/" + req.query.category;
  next();
});

假设这是一个GET请求,类别路由将是:

代码语言:javascript
复制
app.get('/abc', function(req, res) {
  //do stuff for 'abc' category
  res.send('abc');
});

app.get('/ijk', function(req, res) {
  //do stuff for 'ijk' category
  res.send('ijk');
});

app.get('/pqr', function(req, res) {
  //do stuff for 'pqr' category
  res.send('pqr');
});

app.get('/xyz', function(req, res) {
  //do stuff for 'xyz' category
  res.send('xyz');
});

请注意,中间件将编辑所有请求的url,通过添加路径app.use("/path", function(req,res,next)...的请求url进行筛选,或者在其中添加一些逻辑。

票数 0
EN

Stack Overflow用户

发布于 2016-10-03 14:07:40

看起来像旧的“头版控制器”模式:

代码语言:javascript
复制
app.get('/', routeByParameter)
function routeByParameter(req, res){
  var category  = req.params.category
  if(category === 'abc'){
    return abcRoute(req, res)
  }
  else if(category === 'xyz'){
    return xyzRoute(req, res)
  }
}
function abcRoute(req, res){
  req.send('abc')
}

或者使用“头版术语”

代码语言:javascript
复制
app.get('/', dispatcher)
function dispatcher(req, res){
  var category  = req.params.category
  if(category === 'abc'){
    return viewAbc(req, res)
  }
  else if(category === 'xyz'){
    return viewXyz(req, res)
  }
}
function viewAbc(req, res){
  req.send('abc')
}

或者,您可以进入并修改或在中间件中创建自定义路由调度器.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39832817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档