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 = 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.