Creating a REST API using Node.js in the MERN stack involves several steps, including setting up MongoDB, creating the backend with Express, and using tools like Postman to test the API. Here’s a detailed guide to help you through the process:
1. Set Up Your Environment
Install Node.js and npm
Download and install Node.js from nodejs.org. npm is included with Node.js.
Install MongoDB
Download and install MongoDB from mongodb.com.
2. Create a New Project
Initialize a new Node.js project:
mkdir mern-rest-api
cd mern-rest-api
npm init -y
Install dependencies:
npm install express mongoose body-parser cors
npm install –save-dev nodemon
Install additional tools:
npm install express-validator
3. Set Up MongoDB
Start MongoDB:
On Windows: Run mongod in your terminal.
On Mac: You can use brew services start mongodb-community.
Create a new database and collection:
Use MongoDB Compass or the MongoDB shell to create a new database (e.g., mern_db) and a collection (e.g., users).
4. Create the Express Server
Create the directory structure:
mkdir src
cd src
mkdir config controllers models routes
touch server.js
Set up the server.js file:
const express = require(‘express‘);
const mongoose = require(‘mongoose‘);
const bodyParser = require(‘body-parser‘);
const cors = require(‘cors‘);
const app = express();
// Middleware
app.use(bodyParser.json());
app.use(cors());
// MongoDB connection
mongoose.connect(‘mongodb://localhost:27017/mern_db‘, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
mongoose.connection.once(‘open‘, () => {
console.log(‘Connected to MongoDB‘);
});
// Routes
const users = require(‘./routes/users‘);
app.use(‘/api/users‘, users);
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
5. Create Models
Create models/User.js:
const mongoose = require(‘mongoose‘);
const UserSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
});
module.exports = mongoose.model(‘User‘, UserSchema);
6. Create Controllers
Create controllers/userController.js:
const User = require(‘../models/User‘);
const { body, validationResult } = require(‘express-validator‘);
// Get all users
exports.getUsers = async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (err) {
res.status(500).json({ message: err.message });
}
};
// Create a new user
exports.createUser = [
body(‘name‘).notEmpty().withMessage(‘Name is required‘),
body(‘email‘).isEmail().withMessage(‘Email is not valid‘),
body(‘password‘).isLength({ min: 6 }).withMessage(‘Password must be at least 6 characters long‘),
async (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
const { name, email, password } = req.body;
try {
const user = new User({ name, email, password });
await user.save();
res.status(201).json(user);
} catch (err) {
res.status(500).json({ message: err.message });
}
},
];
7. Create Routes
Create routes/users.js:
const express = require(‘express‘);
const router = express.Router();
const userController = require(‘../controllers/userController‘);
// Get all users
router.get(‘/‘, userController.getUsers);
// Create a new user
router.post(‘/‘, userController.createUser);
module.exports = router;
8. Test the API with Postman
Start the server:
nodemon src/server.js
Open Postman and create a new request:
– **POST** `http://localhost:5000/api/users` to create a new user. In the body, use the following JSON format:
{
“name”: “thirdearnest123”,
“email”: “thirdearnest123@example.com”,
“password”: “password123”
}
“`
Useful Resources
Node.js
Express.js
MongoDB
Postman
Mongoose
Express Validator
By following these steps, you will have a basic REST API setup using the MERN stack. You can further expand this by adding more features, authentication, and front-end integration.