541
1. Installation
Prerequisites:
- Install Node.js from https://nodejs.org/
Install Express Globally:
npm install express-generator -g
Create Express App:
express myapp cd myapp npm install npm start
2. Create a Simple Express App (Manual Setup)
- Initialize Project:
mkdir myapp cd myapp npm init -y npm install express
- Create index.js:
const express = require('express');
const app = express();
const PORT = 3000;
// Basic Route
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// Start Server
app.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}`);
});
- Run App:
node index.js
- Visit http://localhost:3000
3. Basic Routing
app.get('/', (req, res) => {
res.send('Home Page');
});
app.post('/submit', (req, res) => {
res.send('Form Submitted');
});
app.put('/update', (req, res) => {
res.send('Data Updated');
});
app.delete('/delete', (req, res) => {
res.send('Data Deleted');
});
- Route Parameters:
app.get('/user/:id', (req, res) => {
res.send(`User ID: ${req.params.id}`);
});
- Query Parameters:
app.get('/search', (req, res) => {
res.send(`Query: ${req.query.q}`);
});
4. Middleware
Built-in Middleware:
app.use(express.json()); // Parse JSON
app.use(express.urlencoded({ extended: true })); // Parse URL-encoded data
Custom Middleware:
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
5. Static Files
app.use(express.static('public')); // Serve static files from "public" folder
- Access CSS, JS, images directly by placing them in the public directory.
6. Handling Form Data (POST)
app.post('/submit', (req, res) => {
const { name, email } = req.body;
res.send(`Received: ${name}, ${email}`);
});
7. Error Handling
app.use((req, res, next) => {
res.status(404).send('Page Not Found');
});
// Custom Error Handler
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Something broke!');
});
8. Templating (EJS Setup)
- Install EJS:
npm install ejs
- Set EJS as View Engine:
app.set('view engine', 'ejs');
- Create views/index.ejs:
<!DOCTYPE html>
<html>
<head><title>Express EJS</title></head>
<body>
<h1>Hello, <%= name %>!</h1>
</body>
</html>
- Render EJS Template:
app.get('/', (req, res) => {
res.render('index', { name: 'Express' });
});
9. JSON Response
app.get('/api/user', (req, res) => {
res.json({ id: 1, name: 'John Doe' });
});
10. Redirects
app.get('/google', (req, res) => {
res.redirect('https://google.com');
});
11. Route Grouping (Router)
const userRouter = express.Router();
userRouter.get('/', (req, res) => {
res.send('User List');
});
userRouter.get('/:id', (req, res) => {
res.send(`User ID: ${req.params.id}`);
});
app.use('/users', userRouter);
12. File Upload (Multer)
- Install Multer:
npm install multer
- Upload File:
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
res.send(`File uploaded: ${req.file.originalname}`);
});
13. Connect to MongoDB (Mongoose)
- Install Mongoose:
npm install mongoose
- Connect to DB:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true });
const User = mongoose.model('User', { name: String });
app.get('/add-user', async (req, res) => {
const user = new User({ name: 'John' });
await user.save();
res.send('User added');
});
14. API Example (CRUD Operations)
let users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' }
];
// GET all users
app.get('/api/users', (req, res) => {
res.json(users);
});
// GET user by ID
app.get('/api/users/:id', (req, res) => {
const user = users.find(u => u.id == req.params.id);
if (user) res.json(user);
else res.status(404).send('User not found');
});
// POST new user
app.post('/api/users', (req, res) => {
const newUser = { id: users.length + 1, name: req.body.name };
users.push(newUser);
res.status(201).json(newUser);
});
// DELETE user
app.delete('/api/users/:id', (req, res) => {
users = users.filter(u => u.id != req.params.id);
res.status(204).send();
});
15. Useful Middleware
const cors = require('cors');
app.use(cors()); // Enable CORS
const morgan = require('morgan');
app.use(morgan('dev')); // Logging requests
16. Common Commands
npm start # Start server nodemon index.js # Auto-restart on change (install nodemon globally) npm install --save express # Install express
