.NET Core - التعامل مع JSON وModel Binding

5.3 .NET Core - التعامل مع JSON وModel Binding

في Web APIs باستخدام ASP.NET Core، يتم إرسال واستقبال البيانات عادةً بتنسيق JSON. يتم تحويل هذه البيانات تلقائيًا إلى كائنات C# باستخدام ما يسمى بـ Model Binding، وهو ميكانيزم مدمج في ASP.NET.


🔹 ما هو JSON؟

JSON (JavaScript Object Notation) هو تنسيق خفيف وسهل القراءة لتمثيل البيانات باستخدام أزواج (key/value). مثال:


{
  "id": 1,
  "name": "Monitor",
  "price": 1200
}

🔸 في Web APIs، يتم إرسال هذا النوع من البيانات من وإلى السيرفر تلقائيًا.

🔹 ما هو Model Binding؟

Model Binding هي الآلية التي تستخدمها ASP.NET Core لتحويل البيانات القادمة من الطلب (مثل JSON) إلى كائنات C# تلقائيًا.

📦 مثال على Model:


public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

📨 مثال على API يستقبل JSON:


[HttpPost]
public IActionResult AddProduct([FromBody] Product product)
{
    return Ok($"تم استقبال: {product.Name} - السعر: {product.Price}");
}

🔸 لاحظ استخدام [FromBody] لتحديد أن البيانات تأتي من جسم الطلب بصيغة JSON.

🔹 الإرسال من Postman


POST https://localhost:5001/api/products

{
  "id": 5,
  "name": "Mouse Pad",
  "price": 50
}

🔸 يتم تحويل هذا JSON إلى كائن C# تلقائيًا داخل الـ API.

🔹 ربط البيانات من QueryString أو Route


// من عنوان URL
[HttpGet("{id}")]
public IActionResult GetProduct(int id) => Ok($"معرف المنتج = {id}");

// من Query String
[HttpGet]
public IActionResult Search([FromQuery] string name)
    => Ok($"جارٍ البحث عن المنتج: {name}");

🔸 يمكن لـ ASP.NET Core ربط القيم من Body أو Route أو Query تلقائيًا.

🔹 نصائح هامة

  • استخدم [FromBody] عندما تستقبل JSON.
  • استخدم [FromQuery] للمعلمات في رابط الاستعلام.
  • احرص على أن أسماء الخصائص في JSON تطابق أسماء الخصائص في الكلاس C#.

🔹 الخلاصة

Model Binding تسهل تحويل البيانات القادمة من المستخدم إلى كائنات C# دون الحاجة إلى parsing يدوي. وتدعم ASP.NET Core الربط من JSON، Route، QueryString، وحتى النموذج المرفوع (Form).

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework