Neste tutorial, aprenderemos como criar uma API RESTful simples usando Node.js e PostgreSQL. Essa API REST atenderia a uma lista de usuários. Assim, configuraríamos o PostgreSQL e criaríamos um banco de dados e uma tabela de usuários. Em seguida, também configuraríamos o Node.js e criaríamos uma conexão com o banco de dados. Quer você seja um desenvolvedor experiente ou novo em Node.js e PostgreSQL, este tutorial em vídeo é um recurso valioso para quem procura criar aplicativos da Web robustos e escaláveis.
Vamos começar
Curiosamente, tanto o PostgreSQL quanto o Node.js são gratuitos!
Instale os dois pacotes. Por favor, assista ao vídeo para o passo a passo. Mas é bem fácil e claro.
Execute este comando para instalar o PostgreSQL
npm install pg --save
Crie um arquivo chamado connection.js. Este arquivo conteria os dados de conexão conforme mostrado abaixo:
const {Client} = require('pg')
const client = new Client({
host: "localhost",
user: "postgres",
port: 5432,
password: "rootUser",
database: "postgres"
})
module.exports = client
Node.js nos permite criar um servidor. Agora você precisa criar um segundo arquivo. Eu o chamo de api.js (mas você pode dar qualquer nome).
Escreva o seguinte código dentro. Este código cria um servidor escutando na porta 3300. Em seguida, também é criado um cliente que se conecta ao servidor.
const client = require('./connection.js')
const express = require('express');
const app = express();
app.listen(3300, ()=>{
console.log("Sever is now listening at port 3000");
})
client.connect();
Adicione o BodyParser: Isso é usado para lidar com a conversão de e para json.
const bodyParser = require("body-parser");
app.use(bodyParser.json());
Você também precisa instalar o analisador de corpo usando npm install
Para solicitações GET, usamos a função app.get(). Esta função recebe dois parâmetros: a rota /users e um callback. O retorno de chamada é uma função de seta que é executada quando uma solicitação é recebida. O retorno de chamada recebe dois parâmetros: solicitação e resposta. Dentro do callback, usamos o cliente para consultar o banco de dados e enviar o resultado de volta.
app.get('/users', (req, res)=>{
client.query(`Select * from users`, (err, result)=>{
if(!err){
res.send(result.rows);
}
});
client.end;
})
client.connect();
O código abaixo é usado para obter um único usuário por id. Observe como o parâmetro é passado na url.
app.get('/users/:id', (req, res)=>{
client.query(`Select * from users where id=${req.params.id}`, (err, result)=>{
if(!err){
res.send(result.rows);
}
});
client.end;
})
client.connect();
Você pode postar um novo usuário usando o código abaixo:
app.post('/users', (req, res)=> {
const user = req.body;
let insertQuery = `insert into users(id, firstname, lastname, location)
values(${user.id}, '${user.firstname}', '${user.lastname}', '${user.location}')`
client.query(insertQuery, (err, result)=>{
if(!err){
res.send('Insertion was successful')
}
else{ console.log(err.message) }
})
client.end;
})
Basicamente, o código de atualização segue o mesmo padrão:
app.put('/users/:id', (req, res)=> {
let user = req.body;
let updateQuery = `update users
set firstname = '${user.firstname}',
lastname = '${user.lastname}',
location = '${user.location}'
where id = ${user.id}`
client.query(updateQuery, (err, result)=>{
if(!err){
res.send('Update was successful')
}
else{ console.log(err.message) }
})
client.end;
})
O código de exclusão é fornecido abaixo:
app.delete('/users/:id', (req, res)=> {
let insertQuery = `delete from users where id=${req.params.id}`
client.query(insertQuery, (err, result)=>{
if(!err){
res.send('Deletion was successful')
}
else{ console.log(err.message) }
})
client.end;
})
Agora eu recomendo que façamos o mesmo usando o MySQL. O procedimento é semelhante com apenas uma pequena diferença em relação à conexão. Vou deixar isso para você como um lar.
Assim, conseguimos construir a API e criar a conexão com o banco de dados. Depois de ter uma API (Application Programming Interface), você também precisa de uma UI (User Interface). Na próxima lição, construiremos a IU usando Angular 11, Angular Materials e Bootstrap.