إنشاء واجهة برمجة تطبيقات REST باستخدام TypeScript وExpress

TypeScript وExpress عبارة عن مزيج قوي لبناء واجهات برمجة تطبيقات REST قوية. يوفر TypeScript أمانًا للأنواع وأدوات أفضل وتجربة تطوير محسنة، بينما Express عبارة عن إطار عمل ويب بسيط لـ Node.js. سيوضح هذا الدليل الخطوات اللازمة لبناء واجهة برمجة تطبيقات REST باستخدام TypeScript وExpress.

إعداد المشروع

ابدأ بإنشاء دليل جديد للمشروع وتهيئة تطبيق 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

قم بإنشاء ملف tsconfig.json لتكوين TypeScript. قم بتشغيل الأمر التالي:

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: controllers وservices.

في المجلد 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

لاختبار واجهة برمجة التطبيقات REST، استخدم أداة مثل Postman أو curl لإرسال الطلبات إلى نقاط النهاية. ابدأ تشغيل الخادم وأرسل طلب GET إلى /api/users وطلب POST إلى /api/users باستخدام حمولة JSON.

خاتمة

باتباع هذه الخطوات، يمكن إنشاء واجهة برمجة تطبيقات REST باستخدام TypeScript وExpress. يضيف TypeScript أمان النوع وتجربة تطوير أفضل، بينما يوفر Express إطار عمل بسيط وقوي لبناء خدمات RESTful. يمكن تحسين هذا الإعداد بشكل أكبر عن طريق إضافة التحقق من الصحة ومعالجة الأخطاء ومنطق الأعمال الأكثر تعقيدًا.