Aqui está um exemplo de uma API REST em Node.js usando o framework Express para realizar operações de GET
, POST
, PUT
e DELETE
em uma tabela de clientes no MySQL. A tabela possui as colunas cd_codigo_cli
(int) e nm_cliente_cli
(varchar(10)).
Você precisará instalar as bibliotecas necessárias. No terminal, execute:
npm init -y
npm install express mysql2 body-parser
Aqui está o SQL para criar a tabela clientes
:
CREATE DATABASE IF NOT EXISTS sistema_clientes;
USE sistema_clientes;
CREATE TABLE IF NOT EXISTS clientes (
cd_codigo_cli INT AUTO_INCREMENT PRIMARY KEY,
nm_cliente_cli VARCHAR(10) NOT NULL
);
Crie um arquivo app.js
com o código abaixo:
const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
// Configuração da conexão com o banco de dados MySQL
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'sua_senha',
database: 'sistema_clientes'
});
db.connect((err) => {
if (err) {
console.error('Erro ao conectar ao MySQL:', err);
} else {
console.log('Conectado ao MySQL.');
}
});
// Rota GET para listar todos os clientes
app.get('/clientes', (req, res) => {
const sql = 'SELECT * FROM clientes';
db.query(sql, (err, results) => {
if (err) throw err;
res.json(results);
});
});
// Rota GET para buscar um cliente por ID
app.get('/clientes/:id', (req, res) => {
const { id } = req.params;
const sql = 'SELECT * FROM clientes WHERE cd_codigo_cli = ?';
db.query(sql, [id], (err, result) => {
if (err) throw err;
if (result.length > 0) {
res.json(result[0]);
} else {
res.status(404).json({ message: 'Cliente não encontrado' });
}
});
});
// Rota POST para adicionar um novo cliente
app.post('/clientes', (req, res) => {
const { nm_cliente_cli } = req.body;
const sql = 'INSERT INTO clientes (nm_cliente_cli) VALUES (?)';
db.query(sql, [nm_cliente_cli], (err, result) => {
if (err) throw err;
res.status(201).json({ message: 'Cliente adicionado', id: result.insertId });
});
});
// Rota PUT para atualizar um cliente
app.put('/clientes/:id', (req, res) => {
const { id } = req.params;
const { nm_cliente_cli } = req.body;
const sql = 'UPDATE clientes SET nm_cliente_cli = ? WHERE cd_codigo_cli = ?';
db.query(sql, [nm_cliente_cli, id], (err, result) => {
if (err) throw err;
if (result.affectedRows > 0) {
res.json({ message: 'Cliente atualizado' });
} else {
res.status(404).json({ message: 'Cliente não encontrado' });
}
});
});
// Rota DELETE para remover um cliente
app.delete('/clientes/:id', (req, res) => {
const { id } = req.params;
const sql = 'DELETE FROM clientes WHERE cd_codigo_cli = ?';
db.query(sql, [id], (err, result) => {
if (err) throw err;
if (result.affectedRows > 0) {
res.json({ message: 'Cliente removido' });
} else {
res.status(404).json({ message: 'Cliente não encontrado' });
}
});
});
// Iniciar o servidor
app.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
- GET
/clientes
: Retorna a lista de todos os clientes. - GET
/clientes/:id
: Retorna os dados de um cliente específico com base nocd_codigo_cli
. - POST
/clientes
: Adiciona um novo cliente. - PUT
/clientes/:id
: Atualiza os dados de um cliente específico. - DELETE
/clientes/:id
: Remove um cliente específico.
No terminal, execute o comando:
node app.js
Agora sua API estará rodando na porta 3000.
Você pode testar as requisições com o Postman ou cURL para verificar a funcionalidade da API.
Claro! Abaixo estão as rotas da API REST que implementamos para manipulação da tabela de clientes no banco de dados MySQL.
-
GET
/clientes
Retorna todos os clientes cadastrados no banco de dados.Exemplo de Requisição:
GET http://localhost:3000/clientes
Resposta:
[ { "cd_codigo_cli": 1, "nm_cliente_cli": "Joao" }, { "cd_codigo_cli": 2, "nm_cliente_cli": "Maria" } ]
-
GET
/clientes/:id
Retorna os dados de um cliente específico com base nocd_codigo_cli
.Exemplo de Requisição:
GET http://localhost:3000/clientes/1
Resposta:
{ "cd_codigo_cli": 1, "nm_cliente_cli": "Joao" }
Caso o cliente não seja encontrado:
{ "message": "Cliente não encontrado" }
-
POST
/clientes
Adiciona um novo cliente ao banco de dados.Exemplo de Requisição (corpo da requisição em JSON):
POST http://localhost:3000/clientes Content-Type: application/json
{ "nm_cliente_cli": "Pedro" }
Resposta:
{ "message": "Cliente adicionado", "id": 3 }
-
PUT
/clientes/:id
Atualiza os dados de um cliente específico com base nocd_codigo_cli
.Exemplo de Requisição (corpo da requisição em JSON):
PUT http://localhost:3000/clientes/1 Content-Type: application/json
{ "nm_cliente_cli": "Joao Silva" }
Resposta:
{ "message": "Cliente atualizado" }
Caso o cliente não seja encontrado:
{ "message": "Cliente não encontrado" }
-
DELETE
/clientes/:id
Remove um cliente específico com base nocd_codigo_cli
.Exemplo de Requisição:
DELETE http://localhost:3000/clientes/1
Resposta:
{ "message": "Cliente removido" }
Caso o cliente não seja encontrado:
{ "message": "Cliente não encontrado" }
Essas rotas cobrem todas as operações CRUD (Create, Read, Update, Delete) para a tabela de clientes.