
Сегодня мы с вами разберем как добавлять исполнителей в наше API и обновлять их данные.
В прошлом уроке мы использовали с вами только get запрос. Для добавления данных в наш API мы будем с вами использовать POST запрос. Так как данные POST запроса передаются в body, то нам необходимо установить специальную библиотеку для express, которая будет парсить наше тело запроса и в req.body записывать что мы передали
Давайте установим ее командой
npm install body-parser --save
Теперь импортируем эту библиотеку
var bodyParser = require('body-parser');
и сразу после строчки создания сервера добавим
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Первая строчка нам нужна, чтобы парсить json, а вторая, чтобы парсить данные формы.
Теперь давайте напишем обработчик нашего запроса
app.post('/artists', function (req, res) {
console.log(req.body);
res.send('post data');
})
В этот раз мы описали POST, а не GET. Мы добавили req.body и вернули тестовую строку.
Как же нам отправить POST запрос? Я для этой цели использую Postman. Это плагин для хрома, который позволяет отправлять запросы.
Указываем урл http://localhost:3012/artists и выбираем тип запроса POST. Дальше кликаем на body и выбираем raw. Здесь нам необходимо указать валидный JSON.
{"aaa": "111"}
Теперь если мы перезапустим node сервер и кликнем Send, то мы видим ответ "post data" от нашего сервера. В консоли же у нас вывелось req.body. Как мы видим, это обычный JSON. Именно такой JSON мы ожидаем получать от фронтенда, чтобы добавлять новых исполнителей.
В нашем случае нам достаточно передавать поле name. Так как базу данных мы пока не используем, то мы будем просто добавлять данные в наш статический массив. Нужно понимать, что во время того, как сервер запущен, эти данные хранятся в оперативной памяти. И как только мы остановим сервер они сотрутся. Но в данным момент нам этого достаточно.
app.post('/artists', function (req, res) {
var artist = {
id: Date.now(),
name: req.body.name
}
artists.push(artist);
res.send(artist);
})
Мы создаем нового артиста. У него мы указываем id, который мы берем используя текущую дану. В нашем случае это даст нам уникальный id, но когда мы будем использовать позже базу данных у нас будут автоматически генерироваться нормальные id. Мы добавляем нового артиста в массив и в качестве ответа возвращаем добавленного артиста. Давайте перезапустим вебсервер и проверим, что все работает.
Теперь давайте реализуем обновление данных. Мы хотим, чтобы мы могли менять у исполнителя только name, а id всегда оставался одинаковый.
app.put('/artists/:id', function (req, res) {
var artist = artists.find(function (artist) {
return artist.id === Number(req.params.id)
});
artist.name = req.body.name;
res.send(artist);
})
Мы описываем put, где указываем динамический id, который хотим обновить и внутри находим исполнителя по id из параметров. Дальше меняем у него имя на имя, полученное из боди запроса. Так как переменная artist является ссылкой на елемент массива, то меняя этот обьект, мы меняем его в массиве. И возвращаем обновленные данные.
Вместо
res.send(artist);
Мы можем писать
res.sendStatus(200);
Это вернет нам статус 200 и сообщение Ok. Обновленные данные возвращать не обязательно, так как мы и так знаем, какие данные мы обновляли и нам главное, чтобы сервер подтвердил, что все хорошо и данные обновлены.
Если мы выполним put запрос и потом получим список исполнителей, то увидим, что он обновился.
Нам осталось реализовать в API только удаление.
Для этого давайте добавим delete метод.
app.delete('/artists/:id', function (req, res) {
artists = artists.filter(function (artist) {
return artist.id !== Number(req.params.id)
})
res.sendStatus(200);
})
Мы хотим пересохранить массив artists отфильтровав всех артистов, кроме того, какой хотим удалить. Это вернет нам массив без удаляемого елемента. Главное опять не забыть привести ID к Number. И конечно мы возвращаем статус 200, который говорит, что удаление прошло успешно.
Если мы выполним delete запрос и получим список исполнителей, то увидим, что мы его удалили.
Итак в этом уроке мы реализовали добавление, обновление и удаление наших исполнителей. Также мы познакомились с такой полезной утилитой как Postman. Базовая версия нашего API готова.
Если у вас возникли какие-то вопросы или комментарии, пишите их прямо под этим видео.