كيفية كتابة REST API بلغة C# في 30 دقيقة: دليل خطوة بخطوة

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: REST API بلغة C# — الأمر بسيط

إنشاء REST API حديث بلغة C# باستخدام ASP.NET Core هو أحد أكثر المهام طلبًا في تطوير backend. يعتقد العديد من المطورين المبتدئين أن كتابة API كامل يتطلب أسابيع من التحضير. في الواقع، باستخدام الأدوات الصحيحة، يمكنك إنشاء REST API بلغة C# في 30 دقيقة حرفيًا.

في هذه المقالة، سنشرح عمليًا كيفية كتابة REST API بلغة C# من الصفر. سننشئ خدمة مصغرة بسيطة لإدارة قائمة المهام (Todo List)، باستخدام الإمكانيات المضمنة في ASP.NET Core. ستتعلم كيفية إعداد التوجيه، وتنفيذ عمليات CRUD، واختبار API عبر Swagger UI.



1. إعداد المشروع في 5 دقائق

للبدء، تأكد من تثبيت .NET SDK 6.0 أو أحدث. إذا لم يكن مثبتًا، قم بتنزيله من الموقع الرسمي لـ Microsoft. افتح terminal ونفذ الأوامر التالية:



dotnet new webapi -n TodoApicd TodoApicode .


ستقوم هذه الأوامر بإنشاء مشروع Web API جديد وفتحه في Visual Studio Code. يتضمن هيكل المشروع عدة ملفات مهمة:

  • Program.cs — نقطة الدخول وإعداد الخدمات
  • Controllers/ — مجلد لوحدات التحكم API
  • appsettings.json — ملف الإعدادات


بشكل افتراضي، يحتوي المشروع بالفعل على مثال لوحدة تحكم WeatherForecastController. سنقوم بحذفها وإنشاء وحدة التحكم الخاصة بنا.



هام: تأكد من وجود السطر builder.Services.AddControllers(); و app.MapControllers(); في ملف Program.cs. هذا هو الإعداد القياسي لـ REST API بلغة C#.



2. إنشاء نموذج البيانات ووحدة التحكم (10 دقائق)

لنبدأ بإنشاء نموذج البيانات. في المجلد الجذر للمشروع، أنشئ مجلدًا باسم Models وأضف إليه ملفًا باسم TodoItem.cs:



public class TodoItem{    public int Id { get; set; }    public string Title { get; set; } = string.Empty;    public bool IsComplete { get; set; }    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;}


الآن، لننشئ وحدة التحكم. في مجلد Controllers، أضف ملفًا باسم TodoController.cs. هذا هو قلب REST API بلغة C# الخاص بنا:



[ApiController][Route("api/[controller]")]public class TodoController : ControllerBase{    private static List<TodoItem> _todos = new();    private static int _nextId = 1;

[HttpGet] public IActionResult GetAll() { return Ok(_todos); }

[HttpGet("{id}")] public IActionResult GetById(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); return Ok(todo); }

[HttpPost] public IActionResult Create(TodoItem item) { item.Id = _nextId++; _todos.Add(item); return CreatedAtAction(nameof(GetById), new { id = item.Id }, item); }

[HttpPut("{id}")] public IActionResult Update(int id, TodoItem item) { var existing = _todos.FirstOrDefault(t => t.Id == id); if (existing == null) return NotFound(); existing.Title = item.Title; existing.IsComplete = item.IsComplete; return NoContent(); }

[HttpDelete("{id}")] public IActionResult Delete(int id) { var todo = _todos.FirstOrDefault(t => t.Id == id); if (todo == null) return NotFound(); _todos.Remove(todo); return NoContent(); }}


لاحظ السمات (attributes):

  • [ApiController] — تفعيل التحقق التلقائي من النماذج
  • [Route("api/[controller]")] — يحدد المسار الأساسي /api/todo
  • [HttpGet], [HttpPost], [HttpPut], [HttpDelete] — ربط

المدونات

توصيات الكتب