إنشاء واجهة برمجة تطبيقات 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. يمكن تحسين هذا الإعداد بشكل أكبر عن طريق إضافة التحقق من الصحة ومعالجة الأخطاء ومنطق الأعمال الأكثر تعقيدًا.