
آموزش مهمترین نکات طراحی RESTful Web API
آموزش مهمترین نکات طراحی RESTful Web API یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی طراحی Restful Web API است که با نام اصلی Designing RESTful Web APIs از شرکت 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 نیز استفاده کنید.
اصول طراحی یک RESTful API استاندارد
طراحی یک RESTful API فقط به تعریف چند endpoint و پاسخ دادن به درخواستهای HTTP محدود نمیشود؛ ساختار منابع، شیوه نامگذاری مسیرها و نحوه استفاده از متدهای HTTP نیز بر کیفیت API تأثیر میگذارند. یک طراحی منسجم باعث میشود مصرفکنندگان API بتوانند منابع و عملیات قابل انجام روی آنها را راحتتر درک کنند. رعایت این اصول همچنین به ایجاد رابطهایی کمک میکند که توسعه، نگهداری و استفاده مجدد از آنها در پروژههای مختلف سادهتر باشد.
در زمان طراحی API باید به این موضوع توجه کرد که قرارداد ارتباطی آن برای کلاینتها روشن و قابل پیشبینی باشد. انتخاب روش مناسب برای نمایش منابع، تعریف رفتار مشخص برای عملیات مختلف و ارائه پاسخهای معنادار، همگی به بهبود تجربه استفاده از API کمک میکنند. در این آموزش با نکات مهم طراحی RESTful Web API آشنا میشوید و یاد میگیرید هنگام پیادهسازی سرویسهای تحت وب، تصمیمهایی بگیرید که ساختار API را منظمتر و استفاده از آن را آسانتر کنند.
طراحی قراردادهای API و مدیریت سناریوهای پیچیده
قرارداد یک API مشخص میکند که کلاینتها چگونه با سرویس ارتباط برقرار کنند، چه اطلاعاتی ارسال کنند و چه نوع پاسخی دریافت کنند. طراحی دقیق این قرارداد اهمیت زیادی دارد، زیرا تغییرات ناسازگار یا رفتارهای مبهم ممکن است به کدهای مصرفکننده آسیب بزنند. برای ساخت یک API قابل استفاده، لازم است ساختار درخواستها و پاسخها با دقت تعریف شود و رفتار سرویس در شرایط مختلف، از جمله ورودیهای نامعتبر یا درخواستهای غیرمنتظره، قابل پیشبینی باشد.
با افزایش قابلیتهای یک سرویس، طراحی API نیز پیچیدهتر میشود و ممکن است چند منبع یا عملیات به یکدیگر وابسته باشند. در چنین شرایطی، تصمیمگیری درباره نحوه نمایش دادهها، ارتباط میان منابع و مدیریت درخواستها اهمیت بیشتری پیدا میکند. شناخت راهکارهای طراحی برای سناریوهای پیچیدهتر به شما کمک میکند APIهایی بسازید که علاوه بر پاسخگویی به نیازهای فعلی، در برابر تغییر نیازمندیهای پروژه نیز ساختار قابل نگهداریتری داشته باشند.
چرا Versioning در طراحی Web API اهمیت دارد؟
APIها معمولاً توسط برنامهها، وبسایتها یا سرویسهای دیگری مصرف میشوند که ممکن است همزمان بهروزرسانی نشوند. اگر تغییرات جدید باعث ناسازگاری با نسخه قبلی شوند، کلاینتهایی که هنوز به ساختار قدیمی وابستهاند ممکن است دچار مشکل شوند. Versioning یا نسخهبندی API روشی برای مدیریت چنین تغییراتی است و به توسعهدهندگان اجازه میدهد نسخههای مختلف یک رابط را به شکلی کنترلشده در اختیار مصرفکنندگان قرار دهند.
انتخاب روش مناسب برای نسخهبندی باید با توجه به ساختار API و نیازهای مصرفکنندگان انجام شود. هدف این است که توسعه سرویس و اضافه شدن قابلیتهای جدید، تا حد امکان بدون ایجاد اختلال ناخواسته برای کاربران نسخههای قبلی پیش برود. آشنایی با اهمیت Versioning به شما کمک میکند از همان مراحل طراحی، به تغییرات آینده فکر کنید و برای نگهداری API در طول زمان تصمیمهای آگاهانهتری بگیرید.
امنیت RESTful API و کنترل دسترسی
امنیت یکی از جنبههای مهم طراحی API است، زیرا این رابطها ممکن است به دادهها و قابلیتهای حساس یک برنامه دسترسی داشته باشند. بسته به نوع سرویس، لازم است هویت درخواستکننده مشخص شود و دسترسی او به منابع و عملیات مختلف کنترل شود. احراز هویت و مجوزدهی دو مفهوم مرتبط اما متفاوتاند: احراز هویت مشخص میکند چه کسی درخواست را ارسال کرده است و مجوزدهی تعیین میکند آن کاربر اجازه انجام چه عملیاتی را دارد.
امنیت API تنها به بررسی هویت کاربران محدود نیست و باید نحوه اعتبارسنجی درخواستها، مدیریت اطلاعات حساس و رفتار سرویس در برابر دسترسیهای غیرمجاز نیز در نظر گرفته شود. طراحی امنیتی مناسب از ابتدا میتواند احتمال بروز برخی آسیبپذیریها را کاهش دهد و کنترل بهتری بر منابع فراهم کند. این آموزش با پرداختن به امنیت در طراحی RESTful Web API، به توسعهدهندگان کمک میکند این ملاحظات را در کنار سایر تصمیمهای معماری سرویس در نظر بگیرند.
سرفصل مطالب آموزش ویدئویی مهمترین نکات طراحی RESTful Web API
فصل اول: مقدمه
- مقدمه
فصل دوم: REST چیست
- مقدمه
- تاریخچه محاسبات توزیع شده و یا Distributed Computing
- بررسی پروتکل HTTP
- بررسی عملی پروتکل HTTP
- REST چیست
- مثالی از یک API خوش طراحی شده
- جمع بندی
فصل سوم: طراحی کردن RESTful API
- مقدمه
- طراحی کردن برای REST
- بررسی عملی استفاده کردن از URI ها
- بررسی نقش Verb ها در طراحی
- بررسی عملی استفاده از Verb های مختلف
- بررسی عملی قابلیت Idempotency
- درک بهتر Idempotency
- طراحی مناسب نتایج و یا Result ها
- طراحی عملی Result ها
- فرمت بندی کردن Result ها
- بررسی عملی فرمت بندی کردن Result ها
- استفاده کردن از Hypermedia
- جمع بندی
فصل چهارم: انجام سناریوهای پیچیدهتر در API
- مقدمه
- طراحی روابط Associaton در API
- بررسی عملی Associaton
- طراحی صفحه بندی و یا Paging در API
- بررسی عملی پیاده سازی قابلیت Paging
- پیاده سازی قابلیت Error Handling در API
- بررسی عملی پیاده سازی قابلیت Error Handling در API
- طراحی کردن قابلیت Caching
- پیاده سازی قابلیت Caching به صورت عملی با استفاده از ETag
- طراحی Functional API ها
- پیاده سازی عملی Functional API
- پیاده سازی Asynchronous API
- جمع بندی
فصل پنجم: اهمیت ورژن بندی کردن (Versioning) در API
- مقدمه
- آیا باید API را ورژن بندی کرد
- طراحی ورژن بندی
- بررسی عملی استراتژی های ورژن بندی کردن
- جمع بندی
فصل ششم: امنیت در API
- مقدمه
- بررسی امنیت و API
- بررسی Cross Domain Security
- بررسی Authentication و Authorization
- بررسی انواع مختلف Authentication
- بررسی روش OAuth
- جمع بندی


