node.js - 与 express 中的查询字符串的精确路由匹配
问题描述
我有一条路线/addresses
返回用户的所有地址。
我需要创建另一个接受过滤器latitude
和longitude
.
任何人都可以通过与/addresses?lat=23.23&lng=-70.22
.
在这种情况下,我必须修改我以前的控制器方法来检查过滤器。
快递可以吗?我可以创建一个与查询字符串完全匹配的不同路由。
就像使用 query params 完成的一样/addresses/:addressId
。
所以为此它会遇到不同的控制器:
/addresses AddressController.getAllAddresses()
/addresses?lat=:lat&lng=:lng AddressController.getAddressByLatLngFilter()
解决方案
在第一个路由处理程序中,您可以检查是否存在查询参数,如果存在,则重定向到另一个路由处理程序:
app.get('/addresses', geo.addresses )
并以一种可以推迟到另一种方式的方式定义路由处理程序:
var this_module = module.exports = {
"addresses": function(req, res, next) {
if (req.query.lat && req.query.lng) {
return this_module.addresses_by_loc(req,res,next);
}
// handle one way...
},
"addresses_by_loc": function(req, res, next) {
// handle another
}
}
推荐阅读
- angularjs - 过滤器插值问题
- python-3.x - 在 Python 中保留路径的一部分
- angular - 三元运算符中的多个条件检查
- sonarlint-vs - Visual Studio 上的 SonarLint 未在错误窗格中显示警告
- c++ - 在循环迭代期间保存对向量中的 void 指针的引用
- plot - 如何加快 NIntegrate 计算?
- python - TensorFlow:ValueError:不支持无值
- python - 如何通过以太网将树莓派连接到 plc?
- javascript - 即使 JS 函数返回 false,表单也会被提交
- javascript - 如何让 JSON.Stringify 正确解析变量?