Запись данных

Завершено

До сих пор вы разработали маршруты для чтения данных для API продуктов Tailwind Traders. Однако вам также нужно добавить продукты.

В этом уроке мы обсудим различные методы, которые можно использовать для добавления или обновления продуктов и демонстрации примеров реализации этого кода. В следующем уроке вы фактически измените код приложения, чтобы добавить новые продукты и обновить существующие.

Узнайте, как записывать данные в API

Чтобы записать данные, используйте метод HTTP, чтобы указать, являются ли данные новыми или обновленными для существующих данных.

Распространенные методы HTTP:

Метод Description
POST Создайте ресурс.
PUT Обновите существующий ресурс.
PATCH Обновите часть существующего ресурса.

Функции PUT и PATCH похожи. Разница заключается в том, что PUT заменяет весь ресурс. PATCH заменяет только свойства, указанные в тексте запроса.

Узнайте, как настроить приложение для получения данных

Чтобы получать данные в веб-приложении, вы настраиваете Express на основе формата входящих данных, таких как HTML или формат JSON. Преобразование и настройка данных являются общими шагами независимо от формата данных.

Примечание.

Данные отправляются через тело запроса.

  1. Импортируйте средство синтаксического анализа текста. Чтобы преобразовать входящие данные в формат, доступный для чтения, импортируйте библиотеку body-parser , установленную с помощью Express:

    let bodyParser = require('body-parser');
    
  2. Настройте тип данных. Настройте 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"
}