快速路由GET与搜索参数

vit*_*ano 5 rest restful-url node.js express

我有两条获取商店的GET路线,但是,一条路线用于获取所有商店,另一条路线用于获取附近的商店.

1)获取所有商店的网址请求如下:

http://mydomain/stores
Run Code Online (Sandbox Code Playgroud)

2)获取附近所有商店的网址:

http://mydomain/stores?lat={lat}&lng={lng}&radius={radius}
Run Code Online (Sandbox Code Playgroud)

问题是:

如何在Express中正确映射这些URL,以便将每个路由重定向到相应的方法?

app.get('/stores', store.getAll);

app.get('/stores', store.getNear);
Run Code Online (Sandbox Code Playgroud)

Pla*_*ato 12

app.get('/stores', function(req, res, next){
  if(req.query['lat'] && req.query['lng'] && req.query['radius']){
    store.getNear(req, res, next);
  } else {
    store.getAll(req, res, next)
  };
});
Run Code Online (Sandbox Code Playgroud)

编辑 - 第二种方式:

store.getNear = function(req, res, next){
  if(req.query['lat'] && req.query['lng'] && req.query['radius']){
    // do whatever it is you usually do in getNear
  } else {  // proceed to the next matching routing function
    next()
  };
}
store.getAll = function(req, res, next){
  // do whatever you usually do in getAll
}

app.get('/stores', store.getNear, store.getAll)
// equivalent:
// app.get('/stores', store.getNear)
// app.get('/stores', store.getAll)
Run Code Online (Sandbox Code Playgroud)