TypeScript ve Express ile REST API oluşturma

TypeScript ve Express, sağlam REST API'leri oluşturmak için güçlü bir kombinasyondur. TypeScript, tür güvenliği, daha iyi araçlar ve gelişmiş geliştirme deneyimi sağlarken Express, Node.js için minimalist bir web çerçevesidir. Bu kılavuz, TypeScript ve Express kullanarak bir REST API oluşturma adımlarını ele alacaktır.

Projenin Kurulumu

Öncelikle proje için yeni bir dizin oluşturup Node.js uygulamasını başlatalım.

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

Daha sonra Express ve TypeScript için gerekli bağımlılıkları yükleyelim.

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

TypeScript'i yapılandırmak için tsconfig.json dosyasını oluşturun. Aşağıdaki komutu çalıştırın:

npx tsc --init

tsconfig.json dosyasını projenin ihtiyaçlarına uyacak şekilde değiştirin, "strict", "esModuleInterop" gibi seçenekleri etkinleştirin ve çıktı dizinini "dist" olarak ayarlayın.

Express Server'ı Oluşturma

src adında yeni bir klasör oluşturun ve içinde index.ts adında bir dosya oluşturun. Bu dosya Express sunucusu için giriş noktası görevi görecektir.

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}`);
});

Sunucuyu çalıştırmak için aşağıdaki komutu kullanın:

npx ts-node src/index.ts

API Rotalarını Tanımlama

src içinde routes adında yeni bir klasör oluşturun. Bu klasörde, kullanıcıyla ilgili istekleri işlemek için rotaları tanımlamak üzere userRoutes.ts adında bir dosya oluşturun.

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 dosyasına userRoutes satırını içe aktarın ve uygulamada kullanın.

import userRoutes from './routes/userRoutes';

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

Denetleyici ve Hizmet Katmanı Oluşturma

Denetleyiciler ve servisler için ayrı katmanlar oluşturarak kodu düzenleyin. src: içinde iki yeni klasör oluşturun controllers ve services.

controllers klasöründe userController.ts adında bir dosya oluşturun.

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 klasöründe userService.ts adında bir dosya oluşturun.

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;
};

Bu denetleyicileri kullanmak için userRoutes.ts'yı güncelleyin:

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'yi test etme

REST API'yi test etmek için, uç noktalara istekler göndermek için Postman veya curl gibi bir araç kullanın. Sunucuyu başlatın ve /api/users adresine bir GET isteği ve bir JSON yüküyle /api/users adresine bir POST isteği yapın.

Çözüm

Bu adımları izleyerek, TypeScript ve Express kullanılarak bir REST API oluşturulabilir. TypeScript, tür güvenliği ve daha iyi bir geliştirme deneyimi eklerken, Express, RESTful servisleri oluşturmak için basit ve güçlü bir çerçeve sağlar. Bu kurulum, doğrulama, hata işleme ve daha karmaşık iş mantığı eklenerek daha da geliştirilebilir.