دستورهای CRUD چیست؟

وب‌سرویس‌ها همه جا هستند
وب‌سرویس‌ها همه جا هستند

چهار دستور Read، Update، Delete و Create در واقع چهار فانکشن پایه‌ای هستند که مدل‌های مختلف باید قادر به اجرای آن‌ها باشند.


Create, Read, Update, Delete

وقتی API می‌سازیم، مدل ما باید قادر به اجرای حداقل چهار دستور باشد. مدل ما باید بتوانید دستورهای Read، Update، Delete و Create را بر روی منابع اعمال کند. متخصصین کامپیوتر اغلب این دستورها را به اختصار CRUD می‌نامند. این چهار دستور، دستورات پایه‌ای هستند و اگر یک عمل در قالب این چهار دستور نگنجد، باید یک مدل جداگانه برای آن تعریف کرد.

آموزش نحوه استفاده از API در پایتون

استفاده از عبارت CRUD در حین توسعه APIها بسیار مرسوم است، چراکه به توسعه‌دهندگان یادآوری می‌کند چطور یک مدل کامل و کارآمد بسازند. برای مثال یک سیستم برای رهگیری کتاب‌های کتابخانه را در نظر بگیرید. در این سیستم فرضی، یک منبع با نام books داریم که جزییات شیء book را در خود نگه می‌دارد و به شکل زیر است:

&quotbook&quot: {
  &quotid&quot: <Integer>,
  &quottitle&quot: <String>,
  &quotauthor&quot: <String>,
  &quotisbn&quot: <Integer>
}

برای این که از کارایی این سیستم اطمینان حاصل کنیم، باید ببینیم که آیا می‌تواند چهار دستور CRUD را اجرا کند یا نه:

دستور Create: این فانکشن زمانی فراخوانی می‌شود که می‌خواهیم یک کتاب جدید را به کتابخانه اضافه کنیم. برنامه‌ای که یان فانکشن را فراخوانی می‌کند باید برای متغیرهای title، author و isbn مقدار تعریف کند. بعد زا فراخوانی این فانکشن، باید یک ورودی جدید در ریسورس books وجود داشته باشد که متناظر با کتاب جدید است. علاوه بر این، این وروردی جدید یک id منحصر به فرد دریافت می‌کند که به وسیله آن می‌توان به کتاب جدید دسترسی داشت.

دستور Read: این فانکشن برای دیدن تمام کتاب‌های موجود در کتابخانه استفاده می‌شود. فراخوانی این فانکشن تغییری در کتاب‌ها یا لیست ایجاد نمی‌کند، بلکه تنها ریسورس را دریافت کرده و نتیجه را نمایش می‌دهد.

دستور Update: زمانی که نیاز داریم اطلاعات مربوط به یک کتاب را به‌روزرسانی کنیم، از این فانکشن بهره می‌بریم. برنامه‌ای که مسئوب فراخوانی این فانکشن است مقادیر متغیرهای title، author و isbn را به‌روزرسانی می‌کند. پس از فراخوانی نیز ورودی متناظر با کتاب در ریسورس books نیز به‌روزرسانی می‌شود.

دستور Delete: وظیفه این فانکشن حذف یک کتاب از لیست کتاب‌های کتابخانه است. این فانکشن یک یا چند مقدار (مثال title یا isbn) را جهت شناسایی کتاب استفاده کرده و آن را از ریسورس books حذف می‌کند.


دستورهای CRUD در REST

در معماری REST دستورهای CRUP با متدهای HTTP (متدهای GET، PUT، POST و DELETE) متناظر می‌شوند. این متدها در واقع المان‌های اصلی و پایه‌ای یک سیستم ذخیره‌سازی پایدار است. نحوه تناظر دستورهای CRUD و متدهای HTTP به صورت زیر است:

  • Create = POST
  • Read = GET
  • Update = PUT
  • Delete = DELETE


تمرین و تکرار

تا به اینجا با ماهیت و کارکرد دستورهای CRUD با ذکر مثال آشنا شدید. حالا برای یادگیری بیشتر مثالی که در ادامه ذکر می‌کنیم را در نظر بگیرید و برای آن کارکردهای دستورات CRUD را بنویسید.

تصور کنید ما می‌خواهیم یک سیستم ایجاد کنیم که کلاس‌های یک موسسه زبان را رهگیری کنید. در این سیستم ما اطلاعات زیر را داریم:

  • نام کلاس
  • استاد کلاس
  • روز کلاس
  • ساعت کلاس

یک نمونه از کلاس class به شکل زیر خواهد بود:

}
  &quotclass&quot: {
    &quotid&quot: 1    
    &quotname&quot: &quotPure Strength&quot,
    &quottrainer&quot: &quotBicep Bob&quot,
    &quotday&quot: &quotSaturday&quot
    &quothour&quot: 15
   }
}

تمام این کلاس‌ها در ریسورس classes ذخیره می‌شوند. برای هر دستوری که می‌نویسید باید بتوانید به سوالات زیر پاسخ دهید:

  • هر دستور CRUD متناظر با کدام متد HTTP است؟
  • هر فانکشن چه تاثیری بر روی پایگاه داده دارد؟
  • بدنه هر پاسخ به چه شکلی است؟

تعریف عملکردهای دستورات CRUD برای طراحی و پیاده‌سازی APIها یکی از گام‌های ضروری است. وقتی که بدانید API شما قرار است چه کاری انجام دهد، برای نوشتن کد آن تصویر شفاف‌تری دارید.