Gravar dados
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.
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');
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"
}