Como construir uma API REST simples com Node.js e PostgreSQL

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.

Índice

  1. Configurar PostgreSQL/Nodejs
  2. Criar conexão de banco de dados
  3. Crie o servidor e o cliente
  4. Obter todos os usuários
  5. Obter usuário por ID
  6. Adicionar novo usuário
  7. Atualizar usuário
  8. Deletar usuário
  9. Próximos passos
     

Vamos começar


1. Configuração do PostgreSQL/Nodejs

Curiosamente, tanto o PostgreSQL quanto o Node.js são gratuitos!

Baixe o PostgreSQL aqui

Baixe o Node.js aqui

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

2. Criar conexão de banco de dados

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

3. Crie o servidor e o cliente

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 

4. Obter todos os usuários

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();

5. Obter usuário por ID

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();

6. Adicionar novo usuário

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;
})

7. Atualizar detalhes do usuário

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;
})

8. Excluir um usuário

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;
})

9. Próximos passos

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.

1.05 GEEK