By Diego Liascovich
Full-Stack Developer | Microservices | Angular | Node.js
When building REST APIs in Node.js, validating user input is essential to ensure data integrity and application security. In this post, you'll learn how to use Joi to validate incoming requests in a real-world Express.js project.
π§ What is Joi?
Joi is a powerful validation library for JavaScript. It allows you to create schemas to validate JavaScript objects, including request payloads.
π¦ Project Setup
Install the required packages:
npm install express joi
Project structure:
project/
βββ app.js
βββ routes/
β βββ user.routes.js
βββ validators/
β βββ user.validator.js
π§ͺ Example Use Case: User Registration
We want to validate this user object:
{
"name": "John Doe",
"email": "john@example.com",
"password": "12345678"
}
π user.validator.js
// validators/user.validator.js
const Joi = require('joi');
const registerUserSchema = Joi.object({
name: Joi.string().min(3).max(30).required(),
email: Joi.string().email().required(),
password: Joi.string().min(8).required()
});
module.exports = { registerUserSchema };
π user.routes.js
// routes/user.routes.js
const express = require('express');
const { registerUserSchema } = require('../validators/user.validator');
const router = express.Router();
router.post('/register', (req, res) => {
const { error, value } = registerUserSchema.validate(req.body);
if (error) {
return res.status(400).json({ error: error.details[0].message });
}
// Simulate user creation
res.status(201).json({ message: 'User registered successfully', data: value });
});
module.exports = router;
π app.js
// app.js
const express = require('express');
const userRoutes = require('./routes/user.routes');
const app = express();
app.use(express.json());
app.use('/api/users', userRoutes);
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
π Test the API
Use Postman or curl to POST to /api/users/register
:
curl -X POST http://localhost:3000/api/users/register \
-H "Content-Type: application/json" \
-d '{"name":"John Doe", "email":"john@example.com", "password":"12345678"}'
β Summary
Joi helps enforce robust input validation in Express applications. With modular validators and clear error messages, it enhances both security and developer experience.
Top comments (0)