Una API CRUD administra datos a través de cuatro operaciones básicas de base de datos: crear, leer, actualizar y eliminar. Puede crear una API CRUD simple con solo Express y una base de datos PostgreSQL.
Comience por crear un servidor Express al que conectará PostgreSQL. Luego, cree las funciones CRUD y conéctelas a los puntos finales de la API. Una vez que lo haya hecho, podrá conectar Node a PostgreSQL y realizar consultas de base de datos en cada ruta.
Requisitos previos para construir la API
Para seguir este tutorial, debe:
- Instale Node en su máquina.
- Instale el servidor PostgreSQL en su máquina.
- Tener un conocimiento básico de Express.js.
Crear un servidor Express
A crear un servidor Express, comience creando un nuevo directorio e ingresándolo:
notas mkdir
discos compactos notas
Luego inicialice npm:
npm inicializar -y
Este comando generará un paquete.json archivo en la carpeta de notas. Finalmente, instale Express.
npm Instalar en pc Rápido
Crear un nuevo archivo llamado índice.js y agregue el siguiente código.
constante expresar = requerir("Rápido");
constante aplicación = expreso();aplicación.usar(Rápido.urlencodificado({
extendido: verdadero
}));
aplicación.usar(Rápido.json())
aplicación.escuchar (3000, () => consola.log("Escuchando en el puerto 3000"));
Esto creará un nuevo servidor escuchando en el puerto 3000.
Crear una base de datos PostgreSQL
Ejecute el siguiente comando en el símbolo del sistema de psql para crear una base de datos PostgreSQL llamada notedb.
postgres=# CREAR BASE DE DATOS anotadob;
Ejecute este comando para enumerar todas las bases de datos de Postgres y verifique que creó la base de datos notb:
postgres=# \l
Conéctese a la base de datos
Lo primero es lo primero, conecte su aplicación Node al servidor PostgreSQL. Puede usar el módulo node-Postgres.
Ejecute lo siguiente para instalarlo a través de npm:
npm Instalar en pc pág.
Como buena práctica, conéctese a la base de datos en un archivo separado.
Crear un nuevo archivo llamado db.js y agrega lo siguiente.
constante { Cliente } = requerir("pág");
constante {usuario, host, base de datos, contraseña, puerto} = requerir("./dbConfig");constante cliente = nuevo Cliente({
usuario,
anfitrión,
base de datos,
clave,
Puerto,
});
cliente.conectar();
módulo.exportaciones = cliente;
Aquí, está exportando la cadena de conexión que usará para comunicarse con la base de datos. Tenga en cuenta que está leyendo la configuración de conexión de la base de datos desde un archivo de configuración llamado dbConfig.js. Por lo tanto, cree dbConfig.js y agréguele los siguientes datos.
módulo.exportaciones = {
usuario: "{usuariobd}",
anfitrión: "{dbHost}",
base de datos: "anotadob",
clave: "{Contraseña db}",
puerto: 5432,
};
Recuerde reemplazar los detalles de la base de datos con sus propios valores locales.
Crear una tabla PostgreSQL
En el símbolo del sistema de psql, cree una tabla llamada notas. Para empezar, conéctese a la base de datos notadab usando el comando \c.
postgres=# \c anotadob
A continuación, cree una tabla en la base de datos conectada mediante el comando CREATE TABLE.
anotadob=# CREAR notas de TABLA (
CLAVE PRIMARIA DE SERIE DE ID,
nota VARCHAR(255)
);
Esta tabla es bastante simple. Solo tiene una identificación que es una clave principal generada automáticamente y un campo de texto llamado nota.
Crear una nota
En lugar de realizar las operaciones CRUD en las rutas, cree funciones que interactuarán con la base de datos en un archivo separado.
Cree un archivo de ayuda llamado ayudante.js e importe el objeto de conexión desde db.js.
constante cliente = requerir("./db");
Use el siguiente código para crear la función createNote().
constante createNote = (requerido, res) => {
probar {
constante { nota } = cuerpo requerido;si (! nota) {
lanzarError("Enviar nota en cuerpo de la solicitud");
}
cliente.consulta(
"INSERTARDENTRO notas (nota) VALORES ($1)",
[Nota],
(err, datos) => {
resolución.estado(201).json({
error: nulo,
mensaje: "Nueva nota creada",
});
}
);
} captura (error) {
resolución.estado(500).json({
error: error.mensaje,
mensaje: "Error al crearnuevo Nota",
});
}
};
Esta función primero verifica si el cuerpo de la solicitud incluye una nota. Si la nota está ausente, arroja un error.
Para crear una nota, la función usa la cláusula INSERT. Devuelve un objeto JSON que contiene un mensaje de error nulo y un mensaje de éxito si tiene éxito.
Obtener todas las notas
Para obtener todas las notas de la tabla, use la cláusula SELECT *.
constante obtenerNotas = (requerido, res) => {
probar {
cliente.consulta("SELECCIONE * DE notas", (error, datos) => {
si (errar) lanzar errar;
resolución.estado(200).json({
errar: nulo,
notas: datos.filas,
});
});
} captura (error) {
resolución.estado(500).json({
errar: error.mensaje,
notas: nulo,
});
}
};
getNotes() envía la matriz de notas en el objeto de respuesta si la consulta es exitosa.
Obtener nota por ID
La API también tendrá un punto final que devuelve una nota por ID. En helper.js, agregue una función getNoteById().
constante getNoteById = (req, res) => {
probar {
constante { id } = req.parámetros;
cliente.consulta("SELECCIONE * DESDE notas DONDE id=$1", [id], (err, datos) => {
si (errar) lanzar errar;
resolución.estado(200).json({
errar: nulo,
Nota: datos.filas[0],
});
});
} captura (error) {
resolución.estado(500).json({
errar: errar.mensaje,
Nota: nulo,
});
}
};
Esta función devolverá un objeto JSON que contiene la nota y un objeto de error.
Actualizar nota por ID
Para actualizar una nota, necesita una nota y el ID de esa nota. Obtendrá la nota del cuerpo de la solicitud y el ID de la URL.
La función updateNoteById() usa la cláusula UPDATE para actualizar una nota existente con una nota nueva.
constante updateNoteById = (requerido, res) => {
probar {
constante { id } = req.parámetros;
constante { nota } = cuerpo requerido;
cliente.consulta(
"ACTUALIZAR notas ESTABLECER nota = $1DÓNDEidentificación = $2",
[nota, identificación],
(err, datos) => {
si (errar) lanzar errar;
resolución.estado(201).json({
errar: nulo,
mensaje: "Nota actualizada",
});
}
);
} captura (error) {
resolución.estado(500).json({
errar: error.mensaje,
mensaje: "No se pudo actualizar la nota",
});
}
};
Esta función devuelve un mensaje de éxito si la tabla está actualizada y un mensaje de error si no lo está.
Eliminar nota por ID
Para eliminar una nota por ID de la tabla utilice el siguiente código.
constante eliminarNota = (req, res) => {
probar {
constante { id } = req.parámetros;
cliente.consulta("ELIMINAR DE notas DONDE id=$1", [id], (err, datos) => {
si (errar) lanzar errar;
resolución.estado(200).json({
error: nulo,
mensaje: "Nota eliminada",
});
});
} captura (error) {
resolución.estado(500).json({
error: error.mensaje,
mensaje: "No se pudo eliminar la nota",
});
}
};
Ahora que ha creado todas las funciones CRUD, expórtelas.
En helper.js, agregue lo siguiente.
módulo.exportaciones = { crearNota, obtenerNotas, obtenerNotaPorId, actualizarNotaPorId, eliminarNota };
Los importarás en índice.js al crear los puntos finales de la API.
Crear rutas API
El paso final es crear puntos finales de API en índice.js para cada una de las operaciones CRUD.
Comience importando el archivo helper.js.
constante db = requerir("./ayudante")
A continuación, cree cada punto final.
aplicación.obtener("/notes", db.getNotes);
aplicación.obtener("/note/:id", db.getNoteById);
aplicación.poner("/note/:id", db.updateNoteById);
aplicación.post("/note", db.createNote);
aplicación.eliminar("/note/:id", db.borrarNota);
Una API REST para actualizar su base de datos
Una vez que haya terminado, puede verificar que su API funcione utilizando un cliente REST como Postman o escribiendo pruebas unitarias. Debería poder asegurarse de que los cinco puntos finales funcionen como espera.
También puede inspeccionar y administrar los datos que agregó a la base de datos utilizando la herramienta pgAdmin. Es una aplicación GUI que facilita la administración de bases de datos e interactúa con servidores PostgreSQL.