如何使用具有不同查询参数的相同路由

时间:2019-05-27 13:22:36

标签: node.js express

我有两个冲突的端点:

GET /电话?状态=可用;和

GET /电话?状态=可用&min_price =值&max_price =值;

我的路线是:

app.get('/phone', getAvailablePhones);

app.get('/phone', getAvailablePhonesbyPrice);

仅执行第一条路线。

如何在两个端点上都使用此路由?

2 个答案:

答案 0 :(得分:1)

不能具有相同名称和相同参数的两个端点。

查询参数位于req.query对象中。您可以使用此对象以getAvailablePhones方法过滤电话。

例如,如果您的参数是minmax,则可以通过以下方式获得两个值:

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);

这样,您的路线不会重叠,它们是唯一的。

相关问题