Express.js adalah minimal Node.js framework yang populer untuk building REST APIs. Mari pelajari cara membuatnya.
Setup Project
Initialize Project
# Create directory
mkdir my-api && cd my-api
# Initialize npm
npm init -y
# Install Express
npm install express
Basic Server
// index.js
const express = require("express");
const app = express();
const PORT = 3000;
// Middleware
app.use(express.json());
app.get("/", (req, res) => {
res.json({ message: "Welcome to API" });
});
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
CRUD Operations
GET – Read Data
// Get all items
app.get("/api/users", (req, res) => {
res.json(users);
});
// Get single item
app.get("/api/users/:id", (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: "User not found" });
res.json(user);
});
POST – Create Data
app.post("/api/users", (req, res) => {
const { name, email } = req.body;
if (!name || !email) {
return res.status(400).json({ error: "Name and email required" });
}
const newUser = {
id: users.length + 1,
name,
email,
};
users.push(newUser);
res.status(201).json(newUser);
});
PUT – Update Data
app.put("/api/users/:id", (req, res) => {
const user = users.find((u) => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: "User not found" });
const { name, email } = req.body;
user.name = name || user.name;
user.email = email || user.email;
res.json(user);
});
DELETE – Remove Data
app.delete("/api/users/:id", (req, res) => {
const index = users.findIndex((u) => u.id === parseInt(req.params.id));
if (index === -1) return res.status(404).json({ error: "User not found" });
users.splice(index, 1);
res.status(204).send();
});
Middleware
Custom Middleware
// Logger middleware
const logger = (req, res, next) => {
console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
next();
};
app.use(logger);
Error Handling
// Error handler middleware
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ error: "Something went wrong!" });
});
Router Organization
Separate Routes
// routes/users.js
const express = require("express");
const router = express.Router();
router.get("/", getAllUsers);
router.get("/:id", getUserById);
router.post("/", createUser);
router.put("/:id", updateUser);
router.delete("/:id", deleteUser);
module.exports = router;
Use Router
// index.js
const userRoutes = require("./routes/users");
app.use("/api/users", userRoutes);
CORS Setup
Enable CORS
npm install cors
const cors = require("cors");
app.use(cors());
Environment Variables
Using dotenv
npm install dotenv
require("dotenv").config();
const PORT = process.env.PORT || 3000;
Kesimpulan
Express.js menyediakan foundation yang solid untuk building REST APIs dengan minimal boilerplate dan maximum flexibility.
Ditulis oleh
Hendra Wijaya
Artikel Sebelumnya
Cara Membuat Podcast dari Nol
Artikel Selanjutnya
Cara Membuat Robots.txt yang Benar untuk SEO