Как использовать один и тот же маршрут с другим параметром запроса - PullRequest
0 голосов
/ 27 мая 2019

У меня есть две конфликтующие конечные точки:

ПОЛУЧИТЬ / телефон?статус = имеется;и

ПОЛУЧИТЬ / телефон?status = available & min_price = value & max_price = value;

Мой маршрут:

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

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

Выполняется только 1-й маршрут.

Как использовать этот маршрут для обеих конечных точек??

Ответы [ 2 ]

1 голос
/ 27 мая 2019

Вы не можете иметь две конечные точки с одинаковым именем и одинаковыми параметрами.

Параметры запроса находятся в объекте req.query.Вы можете использовать этот объект для фильтрации телефонов методом getAvailablePhones.

Например, если ваши параметры min и max, вы можете получить оба значения следующим образом:

const { min, max } = req.query

И используйте оба для фильтрации вашего поиска

0 голосов
/ 27 мая 2019

Есть несколько способов сделать это, самый простой способ сделать это, изменить наименьший код в зависимости от того, что у вас сейчас есть, будет вызывать next () в первой из двух ваших функций, если установлены min / max.

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

Таким образом, ваши маршруты не перекрываются, они уникальны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...