Запись данных
До сих пор вы разработали маршруты для чтения данных для API продуктов Tailwind Traders. Однако вам также нужно добавить продукты.
В этом уроке мы обсудим различные методы, которые можно использовать для добавления или обновления продуктов и демонстрации примеров реализации этого кода. В следующем уроке вы фактически измените код приложения, чтобы добавить новые продукты и обновить существующие.
Узнайте, как записывать данные в API
Чтобы записать данные, используйте метод HTTP, чтобы указать, являются ли данные новыми или обновленными для существующих данных.
Распространенные методы HTTP:
Метод | Description |
---|---|
POST |
Создайте ресурс. |
PUT |
Обновите существующий ресурс. |
PATCH |
Обновите часть существующего ресурса. |
Функции PUT
и PATCH
похожи. Разница заключается в том, что PUT
заменяет весь ресурс. PATCH
заменяет только свойства, указанные в тексте запроса.
Узнайте, как настроить приложение для получения данных
Чтобы получать данные в веб-приложении, вы настраиваете Express на основе формата входящих данных, таких как HTML или формат JSON. Преобразование и настройка данных являются общими шагами независимо от формата данных.
Примечание.
Данные отправляются через тело запроса.
Импортируйте средство синтаксического анализа текста. Чтобы преобразовать входящие данные в формат, доступный для чтения, импортируйте библиотеку
body-parser
, установленную с помощью Express:let bodyParser = require('body-parser');
Настройте тип данных. Настройте Express для анализа входящих данных (текста запроса) в нужный формат. Следующий код преобразует данные в JSON:
app.use(bodyParser.json({ extended: false }));
Данные, отправляемые клиентом, доступны.req.body
Данные можно считывать и вставлять в базу данных.
Узнайте, как вставить новый продукт
После настройки приложения для получения данных можно создать код для вставки данных. Ниже приведен пример кода, который вставляет новые продукты в хранилище данных приложения Tailwind Trader:
// Insert a new product
app.post('/products', (req, res) => {
const newProduct = req.body;
newProduct.id = products.length + 1;
products.push(newProduct);
res.status(201).json(newProduct);
});
Чтобы вставить новый продукт, вызовите этот API с запросом POST к /products
тексту JSON. Например:
{
"name": "The Hobbit",
"author": "J.R.R. Tolkien"
}
Узнайте, как обновить весь продукт
Помимо добавления новых продуктов, Tailwind Traders нуждается в возможности замены существующих данных о продукте. Ниже приведен пример этого кода, который обрабатывает PUT
запросы:
app.put('/products/:id', (req, res) => {
const id = parseInt(req.params.id);
const updatedProduct = req.body;
const index = products.findIndex(product => product.id === id);
if (index !== -1) {
products[index] = updatedProduct;
res.json(updatedProduct);
} else {
res.status(404).send('Product not found');
}
});
Чтобы обновить продукт, вызовите этот API с запросом PUT на /products/:id
текст JSON. Например:
{
"id": 1,
"name": "The Hobbit",
"author": "J.R.R. Tolkien"
}
Узнайте, как обновить часть продукта
Кроме того, вам потребуется возможность заменить часть данных продукта, а не все. Ниже приведен пример этого кода, который обрабатывает PATCH
запросы:
app.patch('/products/:id', (req, res) => {
const id = parseInt(req.params.id);
const updates = req.body;
const index = products.findIndex(product => product.id === id);
if (index !== -1) {
// overwrite existing properties with updates
products[index] = {...products[index], ...updates};
res.json(products[index]);
} else {
res.status(404).send('Product not found');
}
});
Чтобы обновить определенную часть продукта, вызовите этот API с запросом PATCH на /products/:id
текст JSON. Например:
{
"author": "J.R.R. Tolkien"
}