Node.js 如何使用不同查询参数的同一路由
我有两个冲突的端点: 接电话?状态=可用;及 接电话?状态=可用&最低价格=价值&最高价格=价值 我的路线是:Node.js 如何使用不同查询参数的同一路由,node.js,express,Node.js,Express,我有两个冲突的端点: 接电话?状态=可用;及 接电话?状态=可用&最低价格=价值&最高价格=价值 我的路线是: app.get('/phone', getAvailablePhones); app.get('/phone', getAvailablePhonesbyPrice); 只执行第1个路由 如何为两个端点使用此路由 有几种方法可以做到这一点,最简单的方法是,在设置了min/max的情况下,在两个函数的第一个函数中调用next() const getAvailablePhone
app.get('/phone', getAvailablePhones);
app.get('/phone', getAvailablePhonesbyPrice);
只执行第1个路由
如何为两个端点使用此路由 有几种方法可以做到这一点,最简单的方法是,在设置了min/max的情况下,在两个函数的第一个函数中调用next()
const getAvailablePhones = (req, res, next) => {
if (req.query.min_price || req.query.min_price) return next();
//rest of your code
}
如果调用next(),Express将尝试下一个匹配的函数
编辑以了解更多上下文:
请参阅路由文档。在这个用例中,我将使用params
app.get("phone/:status/:min_price/:max_price",
getAvailablePhonesByPrice);
app.get("phone/:status", getAvailablePhones);
这样你的路线就不会重叠,它们是独一无二的 您不能有两个同名参数的端点 查询参数位于
req.query
对象中。您可以使用此对象在getAvailablePhones
方法中过滤手机
例如,如果参数是min
和max
,则可以通过以下方式获得这两个值:
const{min,max}=req.query
并使用这两种方法来过滤搜索不可能,您必须更改路线名称。有什么问题吗?只需检查存在哪些查询参数并采取相应的行动。这里的方法是正确的,是解决问题的完全有效的方法,但是不能有两个同名的端点。是的,确实可以。如果指定不同的参数,我将更新我的答案,谢谢,甚至不需要不同的参数。在app.use(function(req,res,next))或app.use(“/”,function(req,res,next))中包含中间件是一种非常常见的模式,只要您没有两个函数发送响应,并且前面的函数都调用next(),您可以随时使用相同的命名路由。