آموزش ساخت API با GraphQL در ASP.NET Core
آموزش ساخت API با GraphQL در ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی ساخت API های GraphQL در ASP.NET Core است که با نام اصلی Building GraphQL APIs with ASP.NET Core از شرکت Pluralsight منتشر شده است.
GraphQL چیست؟
GraphQL (QL مخفف Query Language است) یک زبان query کردن منبع باز (open-source) و همچنین یک زبان منعطف برای API ها است. به عبارت دیگر یک runtime برای اجرا و query کردن بر روی داده های موجود است. GraphQL می تواند API ها را پاسخگوتر، انعطاف پذیرتر و سازگارتر کند. البته این مساله هم در اولویت قرار دارد که مشتریان تنها اطلاعات مورد نیاز خود را ارائه دهند. GraphQL یک جایگزین برای REST است که به توسعه دهندگان اجازه میدهد تا درخواستهایی ایجاد کنند که داده ها را در فراخوانی API از چندین data source مختلف می خواند.

در GraphQL معمولاً درخواستی را با فرمت JSON ارسال می کنید تا داده های مورد نیاز خود را دریافت کنید. توسعهدهنده میتواند درخواستها و پاسخها را با استفاده از یک زبان query گرفتن strongly typed تعریف کند که برنامه را قادر میسازد تا تعیین کند چه دادههایی را از یک API نیاز دارد.
تفاوت REST و GraphQL
یکی از تفاوت های مهم بین REST و GraphQL این است که API درخواست و پاسخ را در REST تعیین می کند، در حالی که در GraphQL مشتری تصمیم می گیرد که چه داده هایی را API باید به مشتری بازگرداند.

اگر اپلیکیشنی را توسعه دهید که از معماری RESTful استفاده میکند، تعداد endpoint ممکن است در طول زمان افزایش پیدا کند و تعمیر و نگهداری را به یک مشکل بزرگ تبدیل کند. اگر از GraphQL استفاده می کنید، ممکن است بتوانید تمام داده های مورد نیاز خود را تنها با استفاده از یک API/GraphQL بخوانید.
ساخت GraphQL API در ASP.NET Core
GraphQL روشی برای تعریف API است که به کلاینت اجازه میدهد دادههای موردنیاز خود را با استفاده از Queryهای مشخص درخواست کند. برای ساخت یک GraphQL API در ASP.NET Core، توسعهدهنده باید ساختار دادههای قابل دسترسی، عملیات مجاز و نحوه اجرای درخواستها را تعریف کند. این ساختار به کلاینتها امکان میدهد با استفاده از یک زبان پرسوجوی مشخص، اطلاعات موردنیاز خود را دریافت کنند. آشنایی با اجزای اصلی GraphQL به شما کمک میکند APIهایی طراحی کنید که قرارداد دادههای آنها روشن و قابل توسعه باشد.
در پیادهسازی GraphQL، تعریف Schema اهمیت زیادی دارد؛ زیرا Schema مشخص میکند چه Typeهایی در دسترس هستند و چه عملیاتهایی میتوانند روی آنها انجام شوند. Resolverها نیز مسئول فراهمکردن دادههای موردنیاز برای بخشهای مختلف پاسخ هستند. طراحی درست این اجزا به هماهنگی میان مدل داده و نیازهای کلاینت کمک میکند. در این آموزش با شروع کار با GraphQL، ایجاد API و استفاده از آن در ASP.NET Core آشنا میشوید و میتوانید درک بهتری از فرایند پیادهسازی یک سرویس مبتنی بر GraphQL به دست آورید.
Query و Mutation در GraphQL چه تفاوتی دارند؟
در GraphQL، Query برای دریافت اطلاعات از API استفاده میشود و به کلاینت اجازه میدهد مشخص کند کدام فیلدها را در پاسخ نیاز دارد. این ویژگی میتواند از دریافت دادههای اضافی جلوگیری کند و به برنامه کمک کند پاسخ متناسبتری با نیاز خود دریافت کند. ساختار Query باید با Schema تعریفشده در سرویس سازگار باشد و هر فیلدی که درخواست میشود، باید از طریق منطق اجرایی مناسب قابل بازیابی باشد. به همین دلیل، طراحی Schema و Resolverها در تجربه مصرف API نقش مهمی دارد.
Mutation برای انجام عملیات تغییردهنده دادهها به کار میرود؛ مانند ایجاد یک رکورد جدید یا بهروزرسانی اطلاعات موجود. برخلاف Query که برای خواندن دادهها استفاده میشود، Mutation میتواند وضعیت سیستم را تغییر دهد و به همین دلیل باید اعتبارسنجی ورودیها و کنترل دسترسی مناسب برای آن در نظر گرفته شود. در این آموزش، علاوه بر ساخت و مصرف GraphQL API، تغییر دادهها نیز بررسی میشود تا بتوانید تفاوت این دو نوع عملیات را بشناسید و از آنها در طراحی API استفاده کنید.
Subscription در GraphQL و دریافت بهروزرسانیها
Subscription در GraphQL برای دریافت رویدادها یا بهروزرسانیهایی استفاده میشود که پس از ایجاد درخواست اولیه رخ میدهند. این قابلیت در سناریوهایی مفید است که کلاینت باید از تغییرات جدید مطلع شود، بدون اینکه برای بررسی مداوم وضعیت سیستم درخواستهای تکراری ارسال کند. نحوه انتقال دادههای Subscription به پیادهسازی سرور و زیرساخت ارتباطی مورد استفاده بستگی دارد و معمولاً به سازوکاری برای حفظ ارتباط و ارسال پیامهای جدید نیاز دارد.
طراحی Subscription باید با توجه به تعداد کلاینتها، نوع رویدادها و میزان دادههای ارسالی انجام شود. همچنین لازم است مشخص باشد هر کاربر به کدام اطلاعات اجازه دسترسی دارد و چه رویدادهایی برای او قابل مشاهده هستند. این ملاحظات بهویژه در برنامههایی که دادهها بهصورت پیوسته تغییر میکنند، اهمیت دارند. در این آموزش با کار کردن با Subscriptionها در GraphQL آشنا میشوید و میتوانید نقش آنها را در گسترش قابلیتهای APIهای مبتنی بر ASP.NET Core بهتر درک کنید.
سرفصل مطالب آموزش ویدئویی ساخت API با GraphQL در ASP.NET Core
فصل اول: مقدمه این دوره آموزشی- مقدمه
- مقدمه
- قدرت GraphQL
- GraphQL چیست؟
- آماده سازی یک پروژه
- نوشتن یک Schema
- پیکربندی NET Core
- بررسی Query در API
- جمع بندی
- مقدمه
- اضافه کردن Scalar Type ها
- اضافه کردن Complex Type ها
- بارگذاری داده
- بررسی Argument ها
- بررسی Authorization
- بررسی Interface ها
- جمع بندی
- مقدمه
- ارسال یک پرس و جو از طریق یک درخواست HTTP
- استفاده از نام های مستعار
- قطعات
- پرس و جوها و متغیرهای نامگذاری شده
- دستورالعمل ها
- خطاها
- ایجاد کردن یک کلاینت با NET Core
- استفاده از GraphQL Client برای دات نت
- استفاده از Apollo Client برای جاوا اسکریپت
- جمع بندی
- مقدمه
- تقویت Schema
- بررسی انواع ورودی
- جهش
- اضافه کردن جهش به Schema
- نوشتن یک Query که از Mutation استفاده می کند
- جهش در کلاینت ها
- جمع بندی
- مقدمه
- بررسی Subscription ها
- اضافه کردن Subscription به Schema
- پیکربندی NET Core
- Subscription در کلاینت
- جمع بندی


