Uma API CRUD gerencia dados por meio de quatro operações básicas de banco de dados: criar, ler, atualizar e excluir. Você pode criar uma API CRUD simples com apenas o Express e um banco de dados PostgreSQL.

Comece criando um servidor Express ao qual você conectará o PostgreSQL. Em seguida, crie as funções CRUD e conecte-as aos endpoints da API. Feito isso, você poderá conectar o Node ao PostgreSQL e realizar consultas de banco de dados em cada rota.

Pré-requisitos para criar a API

Para acompanhar este tutorial, você deve:

  • Instale o Node em sua máquina.
  • Instale o servidor PostgreSQL em sua máquina.
  • Ter um conhecimento básico de Express.js.

Criar um servidor expresso

Para criar um servidor expresso, comece criando um novo diretório e inserindo-o:

notas mkdir
cd notas

Em seguida, inicialize o npm:

npm init -y

Este comando irá gerar um pacote.json arquivo na pasta de notas. Por fim, instale o Express.

npm instalar expressar

Crie um novo arquivo chamado index.js e adicione o seguinte código.

const expresso = 
instagram viewer
exigir("expressar");
const aplicativo = expresso();

aplicativo.usar(expressar.urlencoded({
estendido: verdadeiro
}));

aplicativo.usar(expressar.json())
app.listen (3000, () => console.log("Ouvindo na porta 3000"));

Isso criará um novo servidor escutando na porta 3000.

Criar um banco de dados PostgreSQL

Execute o seguinte comando no prompt de comando do psql para criar um banco de dados PostgreSQL chamado noteb.

postgres=# CREATE DATABASE noteb;

Execute este comando para listar todos os bancos de dados Postgres e verifique se você criou o banco de dados noteb:

postgres=# \eu

Conecte-se ao banco de dados

Primeiras coisas primeiro, conecte seu aplicativo Node ao servidor PostgreSQL. Você pode usar o módulo node-Postgres.

Execute o seguinte para instalá-lo via npm:

npm instalar página

Como boa prática, conecte-se ao banco de dados em um arquivo separado.

Crie um novo arquivo chamado db.js e adicione o seguinte.

const { Cliente } = exigir("pg");
const { usuário, host, banco de dados, senha, porta } = exigir("./dbConfig");

const cliente = novo Cliente({
do utilizador,
hospedeiro,
base de dados,
senha,
porta,
});

cliente.conectar();
módulo.exportações = cliente;

Aqui, você está exportando a string de conexão que usará para se comunicar com o banco de dados. Observe que você está lendo as configurações de conexão do banco de dados de um arquivo de configuração chamado dbConfig.js. Portanto, crie dbConfig.js e adicione os seguintes dados a ele.

módulo.exportações = {
do utilizador: "{dbUser}",
hospedeiro: "{dbHost}",
base de dados: "anotadob",
senha: "{dbSenha}",
porta: 5432,
};

Lembre-se de substituir os detalhes do banco de dados por seus próprios valores locais.

Criar uma tabela PostgreSQL

No prompt de comando do psql, crie uma tabela chamada notes. Para começar, conecte-se ao banco de dados noteb usando o comando \c.

postgres=# \c notadob

Em seguida, crie uma tabela no banco de dados conectado usando o comando CREATE TABLE.

anotadob=# CREATE TABLE notas (
CHAVE PRIMÁRIA DE SÉRIE DE ID,
nota VARCHAR(255)
);

Esta tabela é bastante simples. Ele tem apenas um ID que é uma chave primária gerada automaticamente e um campo de texto chamado nota.

Criar uma nota

Ao invés de realizar as operações CRUD nas rotas, crie funções que irão interagir com o banco de dados em um arquivo separado.

Crie um arquivo auxiliar chamado helper.js e importe o objeto de conexão de db.js.

const cliente = exigir("./db");

Use o código a seguir para criar a função createNote().

const createNote = (req, res) => {
tentar {
const { nota } = req.body;

if (!nota) {
lançarErro("Enviar nota dentro corpo do pedido");
}

cliente.consulta(
"INSERIREM notas (nota) VALORES ($1)",
[Nota],
(erro, dados) => {
res.status(201).json({
erro: nulo,
mensagem: "Nova nota criada",
});
}
);
} truque (erro) {
res.status(500).json({
erro: erro.mensagem,
mensagem: "Falha ao crionovo Nota",
});
}
};

Essa função primeiro verifica se o corpo da solicitação incluiu uma nota. Se a nota estiver ausente, ela gera um erro.

Para criar uma nota, a função usa a cláusula INSERT. Ele retorna um objeto JSON contendo uma mensagem de erro nula e uma mensagem de sucesso se for bem-sucedida.

Obter todas as notas

Para obter todas as notas da tabela, use a cláusula SELECT *.

const getNotas = (req, res) => {
tentar {
cliente.consulta("SELECIONAR * DE notas", (erro, dados) => {
E se (errar) lançar errar;

res.status(200).json({
errar: nulo,
notas: dados.rows,
});
});
} truque (erro) {
res.status(500).json({
errar: erro.mensagem,
notas: nulo,
});
}
};

getNotes() envia o array notes no objeto de resposta se a consulta for bem-sucedida.

Obter Nota por ID

A API também terá um endpoint que retorna uma nota por ID. Em helper.js, adicione uma função getNoteById().

const getNoteById = (req, res) => {
tentar {
const { id } = req.params;
cliente.consulta("SELECT * FROM notes WHERE id=$1", [id], (erro, dados) => {
E se (errar) lançar errar;
res.status(200).json({
errar: nulo,
Nota: dados.rows[0],
});
});
} truque (erro) {
res.status(500).json({
errar: errar.mensagem,
Nota: nulo,
});
}
};

Esta função retornará um objeto JSON contendo a nota e um objeto de erro.

Atualizar nota por ID

Para atualizar uma nota, você precisa de uma nota e do ID dessa nota. Você receberá a nota do corpo da solicitação e o ID da URL.

A função updateNoteById() usa a cláusula UPDATE para atualizar uma nota existente com uma nova nota.

const updateNoteById = (req, res) => {
tentar {
const { id } = req.params;
const { nota } = req.body;
cliente.consulta(
"ATUALIZAR notas DEFINIR nota = $1ONDEEu iria = $2",
[nota, identificação],
(erro, dados) => {
E se (errar) lançar errar;

res.status(201).json({
errar: nulo,
mensagem: "Nota atualizada",
});
}
);
} truque (erro) {
res.status(500).json({
errar: erro.mensagem,
mensagem: "Falha ao atualizar a nota",
});
}
};

Esta função retorna uma mensagem de sucesso se a tabela for atualizada e uma mensagem de erro se não for.

Excluir nota por ID

Para excluir uma nota por ID da tabela, use o código a seguir.

const deleteNote = (req, res) => {
tentar {
const { id } = req.params;
cliente.consulta("DELETE FROM notes WHERE id=$1", [id], (erro, dados) => {
E se (errar) lançar errar;

res.status(200).json({
erro: nulo,
mensagem: "Nota excluída",
});
});
} truque (erro) {
res.status(500).json({
erro: erro.mensagem,
mensagem: "Falha ao excluir nota",
});
}
};

Agora que você criou todas as funções CRUD, exporte-as.

Em helper.js, adicione o seguinte.

módulo.exportações = { createNote, getNotes, getNoteById, updateNoteById, deleteNote };

Você vai importá-los em index.js ao criar os endpoints da API.

Criar rotas de API

A etapa final é criar endpoints de API em index.js para cada uma das operações CRUD.

Comece importando o arquivo helper.js.

const bd = exigir("./ajudante")

Em seguida, crie cada endpoint.

app.get("/notes", db.getNotes);
app.get("/note/:id", db.getNoteById);
app.put("/note/:id", db.updateNoteById);
app.post("/note", db.createNote);
app.delete("/note/:id", db.deleteNote);

Uma API REST para atualizar seu banco de dados

Quando terminar, você pode verificar se sua API funciona usando um cliente REST como o Postman ou escrevendo testes de unidade. Você deve ser capaz de garantir que todos os cinco endpoints funcionem conforme o esperado.

Você também pode inspecionar e gerenciar os dados adicionados ao banco de dados usando a ferramenta pgAdmin. É um aplicativo GUI que facilita a administração do banco de dados e a interação com os servidores PostgreSQL.