Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 27 – API JavaScript, Node.js e Express – Routing Basics – GET, POST, PUT, DELETE

Imagem destacada da aula de API

Introdução (3 min)

Imagine um restaurante. Você interage com ele de diferentes maneiras: consultando o cardápio (GET), fazendo um pedido (POST), alterando um pedido existente (PUT) e cancelando um pedido (DELETE). Essas ações são análogas aos verbos HTTP que usamos em APIs. Dominar o roteamento com esses verbos é vital para a construção de APIs modernas, robustas e eficientes.

Nesta aula, você vai dominar os fundamentos do roteamento em APIs RESTful utilizando Node.js com Express. Compreenderá como mapear requisições HTTP para funções específicas no seu servidor, possibilitando a criação de APIs que respondem de maneira adequada a diferentes ações do cliente.

Dentro do ecossistema Node.js/Express, o roteamento é a espinha dorsal da comunicação entre cliente e servidor, permitindo a organização e o processamento eficiente das solicitações recebidas.

Conceito Fundamental (7 min)

O roteamento define como uma aplicação responde a requisições do cliente para uma URL específica com um método HTTP específico (GET, POST, PUT, DELETE). Em termos práticos, é a associação de uma rota (endpoint) com uma função controladora (handler) que processa a lógica de negócio.

Em produção, imagine um e-commerce. Um GET /produtos lista os produtos disponíveis, POST /carrinho adiciona um produto ao carrinho, PUT /carrinho/:id atualiza a quantidade de um produto e DELETE /carrinho/:id remove um item do carrinho. A escolha do verbo HTTP torna a API semanticamente clara e previsível.

O roteamento se integra com diversas tecnologias, como middlewares para autenticação, autorização e logging, além de frameworks de persistência de dados como o MongoDB. Uma das principais vantagens do roteamento bem estruturado é a organização e manutenibilidade do código. A desvantagem de um roteamento mal planejado é a dificuldade em escalar e depurar a aplicação.

Implementação Prática (10 min)

const express = require('express');
const app = express();
const port = 3000;

// Simulando um banco de dados em memória let produtos = [];

app.use(express.json()); // Middleware para lidar com dados JSON

// GET /produtos - Lista todos os produtos app.get('/produtos', (req, res) => { res.json(produtos); });

// POST /produtos - Cria um novo produto app.post('/produtos', (req, res) => { const novoProduto = req.body; produtos.push(novoProduto); res.status(201).json(novoProduto); // 201 Created });

// PUT /produtos/:id - Atualiza um produto existente app.put('/produtos/:id', (req, res) => { const id = parseInt(req.params.id); const produtoAtualizado = req.body; produtos = produtos.map(p => (p.id === id ? produtoAtualizado : p)); res.json(produtoAtualizado); });

// DELETE /produtos/:id - Remove um produto app.delete('/produtos/:id', (req, res) => { const id = parseInt(req.params.id); produtos = produtos.filter(p => p.id !== id); res.sendStatus(204); // 204 No Content });

// Error handling básico app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Erro interno do servidor!'); });

app.listen(port, () => { console.log(Servidor rodando em http://localhost:${port}); });

npm install express
node index.js

Exercício Hands-On (5 min)

Crie uma rota GET /produtos/:id que retorna um produto específico com base no ID. Lembre-se de tratar o caso em que o produto não é encontrado.

Solução:

// ... código anterior ...

// GET /produtos/:id - Retorna um produto específico app.get('/produtos/:id', (req, res) => { const id = parseInt(req.params.id); const produto = produtos.find(p => p.id === id); if (!produto) { return res.status(404).send('Produto não encontrado'); // 404 Not Found } res.json(produto); });

// ... código posterior ...

Teste a nova rota com diferentes IDs, incluindo IDs inválidos. Verifique se as respostas do servidor estão corretas (código de status e corpo da resposta). Para aprofundar seus conhecimentos, explore middlewares para validação de dados e autenticação.

🚀 Pronto para a próxima aula?

Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!

📚 Ver todas as aulas