TypeScript と Express を使用した REST API の構築

TypeScript と Express は、堅牢な REST API を構築するための強力な組み合わせです。TypeScript は型の安全性、より優れたツール、強化された開発エクスペリエンスを提供しますが、Express は Node.js 用の最小限の Web フレームワークです。このガイドでは、TypeScript と Express を使用して REST API を構築する手順について説明します。

プロジェクトの設定

まず、プロジェクト用の新しいディレクトリを作成し、Node.js アプリケーションを初期化します。

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

次に、Express と TypeScript に必要な依存関係をインストールします。

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

TypeScript を構成するには、tsconfig.json ファイルを作成します。次のコマンドを実行します。

npx tsc --init

プロジェクトのニーズに合わせて tsconfig.json ファイルを変更し、"strict""esModuleInterop" などのオプションを有効にし、出力ディレクトリを "dist" に設定します。

Express サーバーの作成

src という名前の新しいフォルダーを作成し、その中に index.ts という名前のファイルを作成します。このファイルは、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}`);
});

サーバーを実行するには、次のコマンドを使用します。

npx ts-node src/index.ts

APIルートの定義

src 内に routes という名前の新しいフォルダーを作成します。このフォルダーに、userRoutes.ts という名前のファイルを作成し、ユーザー関連のリクエストを処理するためのルートを定義します。

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;

index.ts ファイルで、userRoutes をインポートし、アプリケーションで使用します。

import userRoutes from './routes/userRoutes';

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

コントローラーとサービス層の作成

コントローラーとサービスに別々のレイヤーを作成してコードを整理します。 src 内に、controllersservices という 2 つの新しいフォルダーを作成します。

controllers フォルダーに、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);
};

services フォルダーに、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;
};

これらのコントローラーを使用するには、userRoutes.ts を更新します。

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

const router = Router();

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

export default router;

REST APIのテスト

REST API をテストするには、Postman や curl などのツールを使用してエンドポイントにリクエストを送信します。サーバーを起動し、/api/users に GET リクエストを送信し、JSON ペイロードを使用して /api/users に POST リクエストを送信します。

結論

これらの手順に従うと、TypeScript と Express を使用して REST API を作成できます。TypeScript は型の安全性と開発エクスペリエンスを向上させ、Express は RESTful サービスを構築するためのシンプルで強力なフレームワークを提供します。このセットアップは、検証、エラー処理、およびより複雑なビジネス ロジックを追加することでさらに強化できます。