إجراءات CRUD في ASP.NET Core
- 5 دقائق
تدعم خدمة البيتزا لدينا عمليات CRUD للحصول على قائمة بالبيتزا. تُنفَّذ هذه العمليات من خلال أفعال HTTP، والتي تُعيَّن عبر سمات ASP.NET Core. كما رأيت، يتم استخدام فعل HTTP GET
لاسترداد عنصر واحد أو أكثر من خدمة. يتم إضافة تعليق توضيحي لمثل هذا الإجراء باستخدام السمة [HttpGet]
.
يوضح الجدول التالي تعيين العمليات الأربعة التي تنفذها لخدمة البيتزا:
فعل إجراء HTTP | عملية CRUD | سمة ASP.NET Core |
---|---|---|
GET |
قراءة | [HttpGet] |
POST |
إنشاء | [HttpPost] |
PUT |
تحديث | [HttpPut] |
DELETE |
حذف | [HttpDelete] |
لقد رأيت بالفعل كيفية GET
عمل الإجراءات. دعونا نتعلم المزيد عن الإجراءات POST
و PUT
و DELETE
.
POST
لتمكين المستخدمين من إضافة عنصر جديد إلى نقطة النهاية، يجب أن تنفذ الإجراء POST
باستخدام السمة [HttpPost]
. عند تمرير العنصر (في هذا المثال، بيتزا) إلى الأسلوب كمعلمة، ASP.NET Core تلقائيا تحويل أي تطبيق/JSON تم إرساله إلى نقطة النهاية إلى كائن .NET Pizza
مملوء.
إليك توقيع الأسلوب الخاص بالأسلوب Create
الذي ستطبقه في القسم التالي:
[HttpPost]
public IActionResult Create(Pizza pizza)
{
// This code will save the pizza and return a result
}
تعين السمة [HttpPost]
طلبات HTTP POST
المرسلة http://localhost:5000/pizza
إلى Create()
باستخدام الأسلوب . بدلاً من إرجاع قائمة البيتزا، كما رأينا مع الأسلوب Get()
، وهذا الأسلوب يرجع استجابة IActionResult
.
IActionResult
يتيح للعميل معرفة ما إذا كان الطلب قد نجح ويوفر معرف البيتزا الذي تم إنشاؤه حديثاً.
IActionResult
يستخدم رموز حالة HTTP القياسية، بحيث يمكن دمجها بسهولة مع العملاء بغض النظر عن اللغة أو النظام الأساسي الذي يعملون عليه.
ASP.NET Core نتيجة الإجراء |
رمز حالة HTTP | الوصف |
---|---|---|
CreatedAtAction |
201 | أُضيفت البيتزا إلى ذاكرة التخزين المؤقت في الذاكرة. يجري تضمين البيتزا في نص الاستجابة في نوع الوسائط كما هو محدد في عنوان طلب HTTP accept (JSON بشكل افتراضي). |
BadRequest ضمني |
400 | كائن نص pizza الطلب غير صحيح. |
لحسن الحظ، ControllerBase
لديه أساليب الأداة المساعدة التي تنشئ رموز استجابة HTTP المناسبة والرسائل لك. سترى كيفية عمل هذه الأساليب في التمرين التالي.
PUT
تعديل أو تحديث بيتزا في مخزوننا يشبه أسلوب POST التي طبقتها، ولكنها ستستخدم السمة [HttpPut]
وتأخذ المعلمة id
بالإضافة إلى عنصر Pizza
الذي يحتاج إلى التحديث:
[HttpPut("{id}")]
public IActionResult Update(int id, Pizza pizza)
{
// This code will update the pizza and return a result
}
يُعين كل مثيل ActionResult
في الإجراء السابق إلى التعليمة البرمجية الخاصة بحالة HTTP المطابق في الجدول التالي:
ASP.NET Core نتيجة الإجراء |
رمز حالة HTTP | الوصف |
---|---|---|
NoContent |
204 | جرى تحديث البيتزا في ذاكرة التخزين المؤقت في الذاكرة. |
BadRequest |
400 | لا تتطابق قيمة نص Id الطلب مع قيمة المسار id . |
BadRequest ضمني |
400 | كائن نص Pizza الطلب غير صحيح. |
حذف
أحد أسهل الإجراءات التي يمكن تنفيذها هو إجراء DELETE
الذي يأخذ فقط المعلمة id
الخاصة بالبيتزا لإزالته من ذاكرة التخزين المؤقت في الذاكرة:
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
// This code will delete the pizza and return a result
}
يُعين كل مثيل ActionResult
في الإجراء السابق إلى التعليمة البرمجية الخاصة بحالة HTTP المطابق في الجدول التالي:
ASP.NET Core نتيجة الإجراء |
رمز حالة HTTP | الوصف |
---|---|---|
NoContent |
204 | حُذِفت البيتزا من ذاكرة التخزين المؤقت في الذاكرة. |
NotFound |
404 | لا يوجد بيتزا مطابقة للمعلمة id المتاحة في ذاكرة التخزين المؤقت في الذاكرة. |
يوضح التمرين في الوحدة التالية كيفية دعم كل من هذه الإجراءات الأربعة في واجهة برمجة تطبيقات الويب.