Lewati ke konten
Kembali ke Blog

Cara Membuat REST API dengan Express.js

· · 3 menit baca

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

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

Tinggalkan Komentar

Email tidak akan ditampilkan.