
آموزش طراحی و پیاده سازی RESTful API در ASP.NET Core 3
آموزش طراحی و پیاده سازی RESTful API در ASP.NET Core 3 یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ساختن RESTful API در ASP.NET Core 3 است که با نام اصلی Building a RESTful API with ASP.NET Core 3 از شرکت Pluralsight منتشر شده است.
Web API چیست؟
همانطور که از نام آن مشخص است یک Web API یک API است که بر روی Web سوار می شود می تواند توسط پروتکل HTTP مورد دسترسی قرار بگیرند دقت کنید که Web API یک مفهوم است و نه یک تکنولوژی. ما می توانیم Web API را با تکنولوژی های متفاوتی از قبیل جاوا و دات نت ایجاد کنیم.

برای مثال Web API مربوط به توییتر به ما امکان این را می دهد تا با استفاده از روشی برنامه نویسی وار به داده هایی برای خواندن و نوشتن دسترسی پیدا کنیم و با استفاده از این Web API قابلیت هایی را در درون برنامه های خود استفاده کنیم. توصیه می کنیم که از آموزش رایگان ساختن سرویس ها با ASP.NET Web API نیز دیدن کنید.
REST چیست؟
سبک معماری REST که مخفف REpresentational State Transfer میباشد یک سبک معماری و یا architectural style است که استانداردهایی را برای سیستم های کامپیوتری موجود بر روی شبکه فراهم می کند تا بتوانند با یکدیگر به شکل موثر تر و آسان تری ارتباط برقرار کنند.
سیستم هایی که از سبک معماری REST استفاده میکنند سیستم های RESTful نامیده می شوند و با ویژگی هایی از قبیل stateless بودن و یا تفکیک کردن وظایف کلاینت و یا سرور شناخته می شوند.

ضمناً توصیه می کنیم که از سری دوم این آموزش با عنوان آموزش پیاده سازی مباحث پیشرفته RESTful API در ASP.NET Core 3 نیز دیدن کنید.
پیادهسازی RESTful API با ASP.NET Core 3
ASP.NET Core 3 بستری برای ساخت برنامههای تحت وب و سرویسهای HTTP فراهم میکند و میتوان از آن برای پیادهسازی RESTful API استفاده کرد. در این نوع سرویس، منابع از طریق endpointها در دسترس قرار میگیرند و کلاینتها با ارسال درخواستهای HTTP میتوانند اطلاعات را دریافت یا تغییر دهند. آشنایی با ساختار پروژه و نحوه سازماندهی اجزای API، نقطه شروع مناسبی برای توسعه سرویسهایی است که ارتباط میان برنامهها و دادههای آنها را مدیریت میکنند.
در پیادهسازی یک API، تنها پاسخ دادن به درخواستها اهمیت ندارد؛ ساختار کد، قراردادهای قابل استفاده توسط کلاینتها و نحوه مدیریت عملیات روی منابع نیز باید بهدرستی طراحی شوند. ASP.NET Core امکانات لازم برای ساخت endpointها و پردازش درخواستهای HTTP را در اختیار توسعهدهنده قرار میدهد. این آموزش برای برنامهنویسانی مناسب است که میخواهند با رویکردی عملی، ساختار یک RESTful API را در ASP.NET Core 3 پیادهسازی کنند و با مراحل اصلی توسعه آن آشنا شوند.
مدیریت منابع و جستوجو در ASP.NET Core API
در یک API مبتنی بر منابع، کلاینتها باید بتوانند اطلاعات موردنیاز خود را به شکلی روشن و قابل پیشبینی دریافت کنند. هنگامی که یک منبع شامل مجموعهای از دادهها باشد، ارائه قابلیتهایی مانند Filtering و Searching میتواند دسترسی به اطلاعات مرتبط را آسانتر کند. Filtering برای محدود کردن نتایج بر اساس معیارهای مشخص کاربرد دارد، در حالی که Searching به پیدا کردن دادههای متناسب با عبارت یا شرایط جستوجو کمک میکند. طراحی درست این قابلیتها، استفاده از API را برای مصرفکنندگان سادهتر میسازد.
ایجاد و بازیابی منابع از عملیات اساسی در بسیاری از سرویسهای تحت وب هستند. برای پیادهسازی این عملیات، باید مشخص شود درخواستها چگونه به منطق برنامه متصل میشوند و دادهها با چه ساختاری به کلاینت بازگردانده میشوند. همچنین طراحی قرارداد بیرونی API یا Outer Facing Contract کمک میکند نحوه تعامل مصرفکنندگان با سرویس از ساختار داخلی پیادهسازی جدا بماند. آشنایی با این مفاهیم برای ساخت APIهایی با رابط مشخص و قابل نگهداری اهمیت دارد.
اعتبارسنجی دادهها و مدیریت خطا در Web API
دادههایی که از طریق درخواستهای HTTP به یک API ارسال میشوند، همیشه معتبر یا مطابق انتظار نیستند. به همین دلیل، پیش از پردازش یا ذخیرهسازی اطلاعات باید قواعد موردنیاز برنامه بررسی شوند. Data Validation به توسعهدهنده اجازه میدهد شرایط قابل قبول برای دادهها را مشخص کند و از ورود مقادیر نامعتبر به بخشهای بعدی برنامه جلوگیری کند. تعریف این قواعد در کنار طراحی مناسب درخواستها، به افزایش قابلیت اطمینان سرویس و کاهش خطاهای ناشی از ورودیهای نامناسب کمک میکند.
هنگامی که اعتبارسنجی یک درخواست ناموفق باشد، API باید نتیجه را به شکلی قابل فهم به کلاینت اعلام کند. گزارش مناسب Validation Errorها به مصرفکنندگان کمک میکند علت رد شدن درخواست را تشخیص دهند و اطلاعات خود را اصلاح کنند. مدیریت منظم خطاها همچنین باعث میشود رفتار سرویس در شرایط نامعتبر قابل پیشبینیتر باشد. در این آموزش با موضوع اعتبارسنجی دادهها و گزارش خطاهای مربوط به آن آشنا میشوید و میتوانید این ملاحظات را در طراحی APIهای خود به کار بگیرید.
بهروزرسانی و حذف منابع در RESTful API
یک RESTful API معمولاً علاوه بر خواندن اطلاعات، امکان تغییر و حذف منابع را نیز فراهم میکند. برای بهروزرسانی یک منبع، باید مشخص باشد کلاینت چه دادههایی را ارسال میکند و سرویس چگونه تغییرات را اعمال میکند. انتخاب رفتار مناسب برای درخواستهای بهروزرسانی، پاسخگویی روشن به نتایج عملیات و مدیریت شرایطی مانند پیدا نشدن منبع، باعث میشود تعامل با API قابل پیشبینی باشد و مصرفکنندگان بتوانند راحتتر با آن کار کنند.
حذف منابع نیز نیازمند تعریف رفتار مشخصی در قرارداد API است. سرویس باید درخواست حذف را مطابق قواعد طراحیشده پردازش کند و نتیجه عملیات را با پاسخی مناسب به کلاینت اعلام کند. هماهنگی میان عملیات ایجاد، بازیابی، بهروزرسانی و حذف، ساختار API را یکپارچهتر میکند و نگهداری آن را سادهتر میسازد. این آموزش با تمرکز بر پیادهسازی عملیات مختلف روی منابع در ASP.NET Core 3، به توسعهدهندگان کمک میکند جریان اصلی کار با منابع را بهتر درک کنند.
سرفصل مطالب آموزش ویدئویی طراحی و پیاده سازی RESTful API در ASP.NET Core 3
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: شروع به کار با REST
- مقدمه
- پیش نیاز های دوره آموزشی
- بررسی ابزارهای مورد نیاز در این دوره آموزشی
- استفاده از الگوی MVC برای ساختن RESTful API ها
- آموزش عملی ساخت یک پروژه API
- اضافه کردن دیتابیس مورد نظر
- معرفی کردن سبک معماری REST
- یادگیری و بررسی REST Constraint ها
- بررسی Richardson Maturity Model
- جمع بندی
فصل سوم: پیاده سازی ساختار مربوط به Outer Facing Contract
- مقدمه
- بررسی ساختار Outer Facing Contract مربوط به پروژه
- پیاده سازی Outer Facing Contract قسمت اول
- کار کردن با Endpoint Routing
- تعامل با Resource ها از طریق HTTP Method ها
- پیاده سازی Outer Facing Contract قسمت دوم
- به دست آوردن یک Resource تک
- اهمیت Status Code ها
- مقایسه ماهیت Error و Fault
- برگرداندن Status Code های مناسب
- بهبود شرایط Response با استفاده از Problem Detail ها
- بررسی Formatter ها و Content Negotiation
- کار کردن با Content Negotiation و Output Formatter ها
- جمع بندی
فصل چهارم: بازیابی Resource ها
- مقدمه
- مقایسه Outer Facing Model و Entity Model
- تفکیک کردن Entity Model از Outer Facing Model
- بهبود شرایط Action Return Type ها با استفاده از کلاس جنریک ActionResult
- اضافه کردن AutoMapper به پروژه
- استفاده کردن از AutoMapper
- کار کردن با رابطههای Parent و Child
- برگرداندن یک Child Resource تک
- Handle کردن Fault ها
- پشتیبانی کردن از HEAD
- پیاده سازی قسمت HEAD
- جمع بندی
فصل پنجم: پیاده سازی Filtering و Searching
- مقدمه
- انتقال داده ها به API
- پیاده سازی و بررسی Filtering و Searching
- فیلتر کردن Resource Collection ها
- پیاده سازی Filtering بر روی Resource Collection ها
- پیاده سازی Searching بر روی Resource Collection ها
- بررسی Deferred Execution
- گروه بندی کردن پارامترهای مربوط به یک Action Method به درون یک کلاس تک
- جمع بندی
فصل ششم: ایجاد کردن Resource ها
- مقدمه
- بررسی Method Safety و Method Idempotency
- ایجاد کردن یک Resource تک
- ایجاد کردن یک Child Resource
- ایجاد کردن یک Child Resource به همراه Parent Resource مربوطه
- ایجاد کردن یک Collection از Resource ها
- کار کردن با Array Key ها و Composite Key ها
- هندل کردن POST به یک Resource تک
- پشتیبانی کردن از OPTIONS
- پشتیبانی کردن از Content-type Value ها و Input Formatter های دیگر
- جمع بندی
فصل هفتم: پیاده سازی Data Validation و گزارش مربوط به Validation Error ها
- مقدمه
- کارکردن با Validation در سبک معماری REST
- پیاده سازی Input Validation با استفاده از Data Annotation ها
- پیاده سازی Validation و ApiController به عنوان یک Attribute
- پیاده سازی Input Validation در سطح کلاس با استفاده از اینترفیس IValidatableObject
- پیاده سازی Input Validation در سطح کلاس با استفاده از Attribute های سفارشی
- سفارشی سازی Error Message ها
- گزارش کردن Validation Error ها
- سفارشی سازی Validation Error Response ها
- روشهای دیگر و FluentValidation
- جمعبندی
فصل هشتم: به روز رسانی کردن Resource ها
- مقدمه
- مقایسه عملیات PUT و عملیات PATCH
- به روز رسانی کردن یک Resource قسمت اول
- بررسی الگوی Repository
- به روز رسانی کردن یک Resource قسمت دوم
- انجام Data Validation در زمان بروزرسانی کردن یک Resource با استفاده از PUT
- به روز رسانی کردن Collection Resource ها
- بررسی عملیات Upsert
- پیاده سازی عملیات Upsert با استفاده از PUT
- به روز رسانی کردن بخشی از یک Resource
- پیاده سازی به روز رسانی کردن بخشی از یک Resource
- انجام Data Validation در زمان بروز رسانی کردن یک Resource با استفاده از PATCH
- برگرداندن ValidationProblems از درون Controller Action ها
- انجام عملیات Upsert با استفاده از PATCH
- انجام Data Validation در زمان Upsert کردن با استفاده از PATCH
- جمع بندی
فصل نهم: حذف کردن Resource ها
- مقدمه
- حذف کردن یک Resource
- حذف کردن یک Resource به همراه Child Resource های مرتبط با آن
- حذف کردن Collection Resource ها
- بررسی دوباره HTTP Method ها و کاربرد هر کدام
- قدم بعدی در این آموزش چیست؟

