Membangun REST API dengan TypeScript dan Express

TypeScript dan Express merupakan kombinasi yang hebat untuk membangun REST API yang tangguh. TypeScript menyediakan keamanan tipe, perkakas yang lebih baik, dan pengalaman pengembangan yang lebih baik, sementara Express merupakan kerangka kerja web minimalis untuk Node.js. Panduan ini akan memandu Anda melalui langkah-langkah untuk membangun REST API menggunakan TypeScript dan Express.

Menyiapkan Proyek

Mulailah dengan membuat direktori baru untuk proyek dan menginisialisasi aplikasi Node.js.

mkdir typescript-express-api
cd typescript-express-api
npm init -y

Berikutnya, instal dependensi yang diperlukan untuk Express dan TypeScript.

npm install express
npm install --save-dev typescript ts-node @types/node @types/express

Buat file tsconfig.json untuk mengonfigurasi TypeScript. Jalankan perintah berikut:

npx tsc --init

Ubah file tsconfig.json agar sesuai dengan kebutuhan proyek, aktifkan opsi seperti "strict", "esModuleInterop", dan atur direktori keluaran ke "dist".

Membuat Server Ekspres

Buat folder baru bernama src dan di dalamnya, buat file bernama index.ts. File ini akan berfungsi sebagai titik masuk untuk server Express.

import express, { Request, Response } from 'express';

const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.json());

app.get('/', (req: Request, res: Response) => {
  res.send('Hello, TypeScript and Express!');
});

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

Untuk menjalankan server, gunakan perintah berikut:

npx ts-node src/index.ts

Menentukan Rute API

Buat folder baru di dalam src dengan nama routes. Di folder ini, buat file dengan nama userRoutes.ts untuk menentukan rute guna menangani permintaan terkait pengguna.

import { Router, Request, Response } from 'express';

const router = Router();

router.get('/users', (req: Request, res: Response) => {
  res.json({ message: 'Get all users' });
});

router.post('/users', (req: Request, res: Response) => {
  const user = req.body;
  res.json({ message: 'User created', user });
});

export default router;

Dalam file index.ts, impor userRoutes dan gunakan dalam aplikasi.

import userRoutes from './routes/userRoutes';

app.use('/api', userRoutes);

Membuat Controller dan Service Layer

Atur kode dengan membuat lapisan terpisah untuk pengontrol dan layanan. Buat dua folder baru di dalam src: controllers dan services.

Dalam folder controllers, buat file dengan nama userController.ts.

import { Request, Response } from 'express';
import { getAllUsers, createUser } from '../services/userService';

export const getUsers = (req: Request, res: Response) => {
  const users = getAllUsers();
  res.json(users);
};

export const addUser = (req: Request, res: Response) => {
  const newUser = req.body;
  const user = createUser(newUser);
  res.json(user);
};

Dalam folder services, buat file dengan nama userService.ts.

interface User {
  id: number;
  name: string;
}

let users: User[] = [];

export const getAllUsers = (): User[] => {
  return users;
};

export const createUser = (user: User): User => {
  users.push(user);
  return user;
};

Perbarui userRoutes.ts untuk menggunakan pengontrol ini:

import { Router } from 'express';
import { getUsers, addUser } from '../controllers/userController';

const router = Router();

router.get('/users', getUsers);
router.post('/users', addUser);

export default router;

Menguji REST API

Untuk menguji REST API, gunakan alat seperti Postman atau curl untuk mengirim permintaan ke titik akhir. Jalankan server dan buat permintaan GET ke /api/users dan permintaan POST ke /api/users dengan muatan JSON.

Kesimpulan

Dengan mengikuti langkah-langkah ini, REST API dapat dibuat menggunakan TypeScript dan Express. TypeScript menambahkan keamanan tipe dan pengalaman pengembangan yang lebih baik, sementara Express menyediakan kerangka kerja yang sederhana dan canggih untuk membangun layanan RESTful. Pengaturan ini dapat ditingkatkan lebih lanjut dengan menambahkan validasi, penanganan kesalahan, dan logika bisnis yang lebih kompleks.