Gravar dados

Concluído

Até agora, você desenvolveu rotas para leitura de dados da API de produtos da Tailwind Traders. No entanto, você também precisa adicionar produtos.

Nesta unidade, discutiremos os diferentes métodos que podemos usar para adicionar ou atualizar produtos e mostraremos exemplos de como esse código é implementado. Na próxima unidade, você editará o código do aplicativo para adicionar novos produtos e atualizar os existentes.

Compreender como gravar dados na API

Para gravar dados, use um método HTTP para indicar se os dados são novos ou uma atualização de dados existentes.

Os métodos HTTP comuns são:

Método Descrição
POST Criar um novo recurso.
PUT Atualizar um recurso existente.
PATCH Atualizar parte de um recurso existente.

PUT e PATCH são semelhantes. A diferença é que PUT substitui o recurso inteiro. PATCH substitui apenas as propriedades especificadas no corpo da solicitação.

Entenda como configurar seu aplicativo para receber dados

Para receber dados em seu aplicativo Web, configure o Expresso com base no formato dos dados recebidos, como o formato HTML ou JSON. Converter e configurar dados são etapas comuns, independentemente do formato de dados.

Observação

Os dados são enviados pelo corpo da solicitação.

  1. Importe um analisador de corpo. Para converter os dados recebidos em um formato legível, importe a biblioteca body-parser que é instalada com o Expresso:

    let bodyParser = require('body-parser');
    
  2. Configure o tipo de dados. Configure o Express para analisar os dados do corpo de entrada no formato pretendido. O código a seguir converte os dados em JSON:

    app.use(bodyParser.json({ extended: false }));
    

Os dados enviados pelo cliente estão disponíveis em req.body. Você pode fazer a leitura dos dados e inseri-los no banco de dados.

Entender como inserir um novo produto

Depois de configurar um aplicativo para receber dados, você estará pronto para criar um código para inserção de dados. Veja a seguir um exemplo de código que insere novos produtos no armazenamento de dados do aplicativo da 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);
});

Chame essa API com uma solicitação POST para /products com um corpo JSON para inserir um novo produto. Por exemplo:

{
  "name": "The Hobbit",
  "author": "J.R.R. Tolkien"
}

Compreender como atualizar todo o produto

Além de adicionar novos produtos, a Tailwind Traders precisa ter a capacidade de substituir os dados de produtos existentes. Aqui está um exemplo desse código, que trata de solicitações 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');
  }
});

Chame essa API com uma solicitação PUT para /products/:id com um corpo JSON para atualizar um produto. Por exemplo:

{
  "id": 1,
  "name": "The Hobbit",
  "author": "J.R.R. Tolkien"
}

Compreender como atualizar parte de um produto

Você também precisa ter a capacidade de substituir uma parte dos dados de um produto em vez de todos eles. Aqui está um exemplo desse código, que trata de solicitações 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');
  }
});

Para atualizar uma parte específica de um produto, chame essa API com uma solicitação de PATCH a /products/:id com um corpo JSON. Por exemplo:

{
  "author": "J.R.R. Tolkien"
}