Меню

Обработка HTTP DELETE запросв

01.07.2018 - Back-end, NodeJS

Handlong HTTP Delete Request

Посмотрим как отвечать на HTTP Delete запросы.
Это не сильно отличается от того, что мы делали не так давно.

Итак, у нас есть app объект, вызовем метод delete. Передадим ему endpoint с параметром :id. Затем идет route handler. Здесь нам сначала нужно найти нужный курс. Если не существует, то передаем 404 ошибку, если есть, то удаляем и возвращаем удаленный курс.

И опять, часть кода возьмем с предыдущих обработчиков. Например, код чтобы найти курс. Только вместо метода find, воспользуемся методом findIndex.

const course = courses.findIndex(course => parseInt(req.params.id, 10) === course.id);
if (!~course) res.status(404).send('The course with the given ID was not found');


Далее, чтобы удалить курс, воспользуемся методом splice и найденным ранее индексом. И возвратим удаленный объект.

app.delete('/api/courses/:id', (req, res) => {
    const courseIndex = courses.find(course => parseInt(req.params.id, 10) === course.id);
    if (!~courseIndex) res.status(404).send('The course with the given ID was not found');

    const [course] = courses.splice(courseIndex, 1);

    res.send(course);
})

Разбор багов

В нашем код есть несколько багов. Если мы присмотримся к коду в обработчике PUT запросов, то мы увидим что если курс не найден, то он напишет ошибку, но продолжит выполнение. В нашем случае нужно дописать return;

 if (!course) {
        return res.status(404).send('The course with the given ID was not found');
    }

Таже самая проблема и где обработка delete и get запросов.

Метки: , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *