NodeJS es una poderosa plataforma para crear aplicaciones web. En esta sección, exploraremos cómo crear un servidor básico con NodeJS, centrándonos específicamente en validar y autenticar solicitudes. Esto es fundamental para garantizar la seguridad y la integridad de los datos de su aplicación.
Creando un servidor básico
Para comenzar, creemos un servidor HTTP básico con NodeJS. Primero, necesita instalar NodeJS y npm (Node Package Manager) en su computadora. Una vez instalado, puede crear un nuevo archivo JavaScript, por ejemplo server.js
, y agregar el siguiente código:
const http = requerir('http'); servidor constante = http.createServer((req, res) => { res.writeHead(200, {'Tipo de contenido': 'texto/plain'}); res.end('Hola mundo\n'); }); servidor.listen(3000, '127.0.0.1', () => { console.log('Servidor escuchando en el puerto 3000'); });
Este código crea un servidor HTTP que escucha en el puerto 3000 y responde con "Hola mundo" a todas las solicitudes. Para iniciar el servidor, puede ejecutar el comando node server.js
en la terminal.
Solicitar validación
La validación de solicitudes es una parte crucial de cualquier aplicación web. Garantiza que los datos recibidos del cliente estén en el formato correcto y cumplan con todas las reglas comerciales. Para agregar validación de solicitudes a nuestro servidor, podemos usar una biblioteca llamada joi
. Primero instálelo con el comando npm install joi
y luego impórtelo a su archivo server.js:
const Joi = requerir('joi');
Ahora puede definir un esquema de validación para sus solicitudes. Por ejemplo, si está creando una API para un blog, es posible que desee validar solicitudes de publicaciones de blog como esta:
esquema constante = Joi.object({ título: Joi.string().min(3).max(30).required(), contenido: Joi.string().min(5).required(), });
Este esquema define que el título de la publicación del blog debe ser una cadena con un mínimo de 3 y un máximo de 30 caracteres, y el contenido de la publicación debe ser una cadena con un mínimo de 5 caracteres. Puede utilizar este esquema para validar solicitudes como esta:
validación constante = esquema.validar(req.body); si (validación.error) { res.status(400).send(validation.error.details[0].message); devolver; }
Autenticación de solicitudes
La autenticación es otra parte crucial de cualquier aplicación web. Garantiza que solo los usuarios autorizados puedan acceder a determinadas funciones. Para agregar autenticación a nuestro servidor, podemos usar una biblioteca llamada passport
. Primero instálelo con el comando npm install passport
y luego impórtelo a su archivo server.js:
pasaporte const = requerir('pasaporte');
Passport admite muchas estrategias de autenticación, como la autenticación local, OAuth y JWT. Para este ejemplo, usaremos autenticación local. Primero, necesitamos configurar el Pasaporte:
pasaporte.use (nueva estrategia local ( función (nombre de usuario, contraseña, hecho) { User.findOne({ nombre de usuario: nombre de usuario }, función (err, usuario) { si (err) { retorno hecho (err); } if (!usuario) { return hecho(nulo, falso); } if (!user.verifyPassword(contraseña)) { return done(nulo, falso); } retorno hecho (nulo, usuario); }); } ));
Este código configura Passport para utilizar la estrategia local. Intenta encontrar un usuario con el nombre de usuario proporcionado y verifica la contraseña. Si la contraseña es correcta, el usuario queda autenticado.
Para proteger una ruta con autenticación, puede utilizar el método authenticate
de Passport:
app.post('/login', pasaporte.authenticate('local', { SuccessRedirect: '/', failRedirect: '/login' }));
Este código protege la ruta /login con autenticación local. Si la autenticación tiene éxito, el usuario es redirigido a la ruta /. Si falla, el usuario es redirigido a la ruta /login.
En resumen, crear un servidor básico con NodeJS implica configurar el servidor, validar solicitudes y autenticar usuarios. La validación garantiza que los datos entrantes estén en el formato correcto, mientras que la autenticación garantiza que solo los usuarios autorizados puedan acceder a determinados recursos.