我有两个冲突的端点:
GET /电话?状态=可用;和
GET /电话?状态=可用&min_price =值&max_price =值;
我的路线是:
app.get('/phone', getAvailablePhones);
app.get('/phone', getAvailablePhonesbyPrice);
仅执行第一条路线。
如何在两个端点上都使用此路由?
答案 0 :(得分:1)
您不能具有相同名称和相同参数的两个端点。
查询参数位于req.query
对象中。您可以使用此对象以getAvailablePhones
方法过滤电话。
例如,如果您的参数是min
和max
,则可以通过以下方式获得两个值:
const { min, max } = req.query
并同时使用两者来过滤搜索
答案 1 :(得分:0)
有几种方法可以做到这一点,最简单的方法是根据现在的内容更改最少的代码,如果设置了min / max,则可以在两个函数的第一个中调用next()。
const getAvailablePhones = (req, res, next) => {
if (req.query.min_price || req.query.min_price) return next();
//rest of your code
}
Express将尝试在调用next()时匹配的下一个函数。
编辑更多内容: https://expressjs.com/en/guide/routing.html请参阅路由说明文件。在这种用例中,我将使用params。
app.get("phone/:status/:min_price/:max_price",
getAvailablePhonesByPrice);
app.get("phone/:status", getAvailablePhones);
这样,您的路线不会重叠,它们是唯一的。