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

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

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

ابدأ الدورة

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

\n

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

\n

هل أنت مستعد؟ لنبدأ!

\n\n

الخطوة 1: إنشاء المشروع وإعداد البيئة

\n

أولاً، نحتاج إلى تثبيت .NET SDK (الإصدار 6.0 أو أحدث). يمكنك تنزيله من الموقع الرسمي لـ Microsoft. بعد التثبيت، افتح الطرفية أو موجه الأوامر وأنشئ مشروعًا جديدًا:

\n
dotnet new webapi -n TodoApi\ncd TodoApi
\n

سينشئ هذا الأمر قالب ويب-API مع Swagger مثبت مسبقًا. افتح المشروع في Visual Studio Code أو أي بيئة تطوير متكاملة أخرى. يتضمن هيكل المشروع بالفعل مجلدات Controllers و Models وملف Program.cs.

\n

الآن، أضف دعم Entity Framework Core للعمل مع قاعدة البيانات. قم بتثبيت الحزم اللازمة:

\n
dotnet add package Microsoft.EntityFrameworkCore.InMemory\ndotnet add package Microsoft.EntityFrameworkCore.Design
\n

سنستخدم قاعدة بيانات InMemory للتبسيط — سيتم تخزين البيانات في الذاكرة العاملة. للإنتاج، يمكنك استبدالها بـ SQL Server أو PostgreSQL.

\n\n

الخطوة 2: إنشاء نموذج البيانات وسياق قاعدة البيانات

\n

لننشئ النموذج TodoItem. في مجلد Models، أنشئ ملفًا باسم TodoItem.cs:

\n
namespace TodoApi.Models;\n\npublic class TodoItem\n{\n    public long Id { get; set; }\n    public string? Title { get; set; }\n    public bool IsComplete { get; set; }\n}
\n

الآن، لننشئ سياق قاعدة البيانات. في مجلد Data (إذا لم يكن موجودًا، قم بإنشائه) أضف ملفًا باسم TodoContext.cs:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Models;\n\nnamespace TodoApi.Data;\n\npublic class TodoContext : DbContext\n{\n    public TodoContext(DbContextOptions<TodoContext> options) : base(options) { }\n    public DbSet<TodoItem> TodoItems { get; set; }\n}
\n

سجل السياق في Program.cs:

\n
using Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\n\nvar builder = WebApplication.CreateBuilder(args);\n\nbuilder.Services.AddDbContext<TodoContext>(opt =>\n    opt.UseInMemoryDatabase("TodoList"));\n\nbuilder.Services.AddControllers();\nbuilder.Services.AddEndpointsApiExplorer();\nbuilder.Services.AddSwaggerGen();\n\nvar app = builder.Build();\n\nif (app.Environment.IsDevelopment())\n{\n    app.UseSwagger();\n    app.UseSwaggerUI();\n}\n\napp.UseHttpsRedirection();\napp.UseAuthorization();\napp.MapControllers();\napp.Run();
\n\n

الخطوة 3: كتابة المتحكم بعمليات CRUD

\n

لننشئ متحكمًا للعمل مع المهام. في مجلد Controllers، أضف ملفًا باسم TodoItemsController.cs:

\n
using Microsoft.AspNetCore.Mvc;\nusing Microsoft.EntityFrameworkCore;\nusing TodoApi.Data;\nusing TodoApi.Models;\n\nnamespace TodoApi.Controllers;\n\n[Route("api/[controller]")]\n[ApiController]\npublic class TodoItemsController : ControllerBase\n{\n    private readonly TodoContext _context;\n\n    public TodoItemsController(TodoContext context)\n    {\n        _context = context;\n    }\n\n    // GET: api/TodoItems\n    [HttpGet]\n    public async Task<ActionResult<IEnumerable<TodoItem>>> GetTodoItems()\n    {\n        return await _context.TodoItems.ToListAsync();\n    }\n\n    // GET: api/TodoItems/5\n    [HttpGet("{id}")]\n    public async Task<ActionResult<TodoItem>> GetTodoItem(long id)\n    {\n        var todoItem = await                

المدونات

توصيات الكتب