<h2>Introduction</h2>
<p>Building a REST API is a fundamental skill for modern web developers. This tutorial will guide you through creating a production-ready API with Node.js, Express, and MongoDB.</p>
<h2>Prerequisites</h2>
<ul>
<li>Node.js 18+ installed</li>
<li>Basic JavaScript knowledge</li>
<li>MongoDB Atlas account (free tier)</li>
</ul>
<h2>Project Setup</h2>
<p>Start by creating a new project and installing dependencies:</p>
<pre><code>mkdir my-api && cd my-api
npm init -y
npm install express mongoose dotenv cors helmet
npm install --save-dev nodemon</code></pre>
<h2>Creating the Express Server</h2>
<p>Create an <code>index.js</code> file with a basic Express server:</p>
<pre><code>const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const helmet = require('helmet');
require('dotenv').config();
const app = express();
app.use(helmet());
app.use(cors());
app.use(express.json());
app.get('/api/health', (req, res) => {
res.json({ status: 'ok' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));</code></pre>
<h2>Database Connection</h2>
<p>Connect to MongoDB using Mongoose:</p>
<pre><code>mongoose.connect(process.env.MONGODB_URI)
.then(() => console.log('Connected to MongoDB'))
.catch(err => console.error('MongoDB connection error:', err));</code></pre>
<h2>Creating Models</h2>
<p>Define a simple User model:</p>
<pre><code>const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
createdAt: { type: Date, default: Date.now }
});
module.exports = mongoose.model('User', userSchema);</code></pre>
<h2>Implementing CRUD Routes</h2>
<pre><code>// Create user
app.post('/api/users', async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (error) {
res.status(400).json({ error: error.message });
}
});
// Get all users
app.get('/api/users', async (req, res) => {
const users = await User.find();
res.json(users);
});</code></pre>
<h2>Error Handling</h2>
<p>Implement a global error handler:</p>
<pre><code>app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: 'Something went wrong!' });
});</code></pre>
<h2>Conclusion</h2>
<p>You now have a basic REST API with Node.js. Add authentication, validation, and tests to make it production-ready!</p>
