Quick reference Express.js. Routing, middleware, request/response, error handling, dan best practices untuk building Node.js REST APIs.
Cara menginstall Express.js dan dependencies yang diperlukan untuk memulai development.
npm init -y
npm install express
# With TypeScript
npm install --save-dev typescript @types/node @types/expressCara membuat server Express.js sederhana dengan route dasar untuk memulai aplikasi.
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(PORT, () => {
Routing adalah cara Express menangani permintaan HTTP ke endpoint yang berbeda.
Metode HTTP yang didukung Express untuk berbagai jenis operasi API.
app.get('/users', (req, res) => {}); // GET
app.post('/users', (req, res) => {}); // POST
app.put
Route parameters memungkinkan kita menangkap nilai dinamis dari URL.
// Single parameter
app.get('/users/:id', (req, res) => {
const id = req.params.id;
res.send(`User ${id}`);
});
// Multiple parameters
Query parameters adalah bagian dari URL yang mengandung data tambahan seperti filter atau pagination.
// /search?q=javascript&page=2
app.get('/search', (req, res) => {
const { q, page = 1 } = req.query;
res.json({ q, page });
});Router module memungkinkan kita memisahkan route ke file terpisah untuk organisasi kode yang lebih baik.
// routes/users.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {});
router.
Middleware adalah fungsi yang menjalankan tugas tertentu sebelum request sampai ke route handler.
Middleware bawaan Express untuk parsing request body dan serving static files.
// Parse JSON body
app.use(express.json());
// Parse URL-encoded body
app.use(express.urlencoded({ extended: true }));
// Serve static files from 'public' directory
app.use(express.static('public'));
// Serve from specific path
Cara membuat middleware custom untuk keperluan tertentu seperti logging atau authentication.
// Application-level
app.use((req, res, next) => {
console.log('Time:', Date.now());
next();
});
// Route-level
const logger
Middleware dari package npm yang populer untuk menambah fitur keamanan dan utility.
npm install cors helmet morgan compression cookie-parserconst cors = require('cors');
const helmet = require('helmet');
const morgan = require('morgan');
const compression = require(
Cara menangani error di Express dengan middleware khusus untuk error.
// 404 handler (after all routes)
app.use((req, res, next) => {
res.status(404).json({ error: 'Not Found' });
});
// Error handler (4 parameters!)
app.use((
Request object berisi semua informasi tentang HTTP request yang masuk ke server.
app.post('/api/users', (req, res) => {
// Body data
const { name, email } = req.body;
// Route parameters
const
Berbagai method yang tersedia untuk mengirim response kembali ke client.
app.get('/api/demo', (req, res) => {
// Send string/HTML
res.send('Hello');
res.send(
Contoh lengkap implementasi REST API dengan semua operasi CRUD dasar.
const express = require('express');
const app = express();
app.use(express.json
Cara mengintegrasikan Express dengan berbagai database untuk penyimpanan data.
Cara menggunakan PostgreSQL sebagai database dengan package pg.
npm install pgconst { Pool } = require('pg');
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'mydb',
password: 'password'
ORM modern untuk Node.js yang memudahkan interaksi dengan database.
npm install @prisma/client
npx prisma initconst { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
app.get('/api/users', async (req, res) => {
Library untuk validasi data yang type-safe dan mudah digunakan.
npm install zodconst { z } = require('zod');
const userSchema = z.object({
name: z.string().min(2),
email: z.string().
Implementasi authentication menggunakan JSON Web Tokens untuk keamanan API.
npm install jsonwebtoken bcryptconst jwt = require('jsonwebtoken');
const bcrypt = require('bcrypt');
Middleware untuk menangani upload file dari client ke server.
npm install multerconst multer = require('multer');
const storage = multer.diskStorage({
destination: (req, file, cb)
Cara menggunakan environment variables untuk konfigurasi aplikasi yang aman.
npm install dotenvPORT=3000
DATABASE_URL=postgresql://user:pass@localhost:5432/db
JWT_SECRET=your-secret-key
NODE_ENV=developmentrequire('dotenv').config();
const PORT = process.env.PORT || 3000;
const DB_URL = process.env.DATABASE_URL;Praktik keamanan penting untuk melindungi aplikasi Express dari berbagai ancaman.
npm install helmet cors express-rate-limitconst helmet = require('helmet');
const cors = require('cors');
const rateLimit = require('express-rate-limit');
// Security headers
app.use
Cara menangani error dalam kode async/await dengan elegan.
// Wrapper function
const asyncHandler = (fn) => (req, res, next) => {
Promise.resolve(fn(req, res, next)).catch
Cara menulis dan menjalankan test untuk API Express menggunakan Jest dan Supertest.
npm install --save-dev jest supertestconst request = require('supertest');
const app = require('./app');
describe('GET /api/users', () => {
it('should return all users'
Struktur folder yang direkomendasikan untuk proyek Express.js yang terorganisir.
my-app/
├── src/
│ ├── controllers/
│ │ ├── userController.js
│ │ └── authController.js
│ ├── routes/
│ │ ├── userRoutes.js
│ │ └── authRoutes.js
│ ├── middleware/
│ │ ├── auth.js
│ │ ├── validate.js
│ │ └── errorHandler.js
│ ├── models/
│ │ └── User.js
│ ├── utils/
│ │ └── helpers.js
│ └── app.js
├── .env
├── .gitignore
├── package.json
└── server.jsKode status HTTP yang umum digunakan dalam response API.
| Code | Meaning |
|---|---|
| 200 | OK - Success |
| 201 | Created - Resource created |
| 204 | No Content - Success, no response body |
| 400 | Bad Request - Invalid input |
| 401 | Unauthorized - Not authenticated |
| 403 | Forbidden - Not authorized |
| 404 | Not Found - Resource not found |
| 409 | Conflict - Duplicate resource |
| 422 | Unprocessable Entity - Validation failed |
| 500 | Internal Server Error - Server error |
Cara deploy aplikasi Express ke production menggunakan PM2.
# Install PM2
npm install -g pm2
# Start app
pm2 start server.js --name my-app
# Auto-restart on crash
pm2 startup
pm2 save
# Monitor
pm2 monit
# Logs
pm2 logs
Daftar praktik terbaik yang harus diikuti untuk membuat aplikasi Express yang berkualitas.
NODE_ENV=productionLink-link berguna untuk belajar Express.js lebih dalam.
Happy building!