توسعه API های مقیاس پذیر و قابل آزمایش با استفاده از Laravel, PHP و Apiato

همه ما می دانیم که توسعه یک API خوب و قابل اطمینان از ابتدا زمان بر است، بنابراین اگر با من موافقید، ادامه مطلب را بخوانید.نکته: من به شدت پیشنهاد میکنم نسخه اصلی مقاله به زبان انگلیسی رو بخونید. هر زمان که می خواهید یک API قابل قبول بسازید حتی اگر از یک فریم ورک خوب مانند Laravel به عنوان نقطه شروع استفاده کنید باید ویژگی های بسیاری مانند موارد زیر را پیاده سازی کنید:یک معماری خوبورژن بندی APIاحراز هویتویژگی های مدیریتی مانند RBAC (کنترل دسترسی مبتنی بر نقش)راه کاری برای تولید مستندات APIمحلی سازیکش کردن داده ها...و بعد از انجام همه این کارها شما تازه به مرحله ای رسیده اید که می توانید اولین خط کد از منطق تجاری API خود را بنویسید. و این چرخه آماده سازی برای توسعه هر پروژه API جدید تکرار می شود و شما خیلی زود از این موضوع خسته می شوید و در نهایت تصمیم می گیرید که پروژه راه انداز (starter) خود را بنویسید یا به دنبال پکیجی از این دسته بگردید.اینجاست که اِپیاتو به داد شما می رسد!اِپیاتو چیست؟اِپیاتو فریم ورکی برای ساخت سیستم های API محور، مقیاس پذیر و قابل آزمایش با PHP است که بر روی فریم ورک Laravel ساخته شده است. اِپیاتو از بهترین معماری ها، ابزارها و قراردادها به روشی کاملاً خلاقانه در جهت ارائه مجموعه ای غنی از ویژگی ها برای توسعه یک سیستم مدرن PHP استفاده می کند.اِپیاتو مستندات (documentation) کامل، با جزییات، اصول، تعاریف و نمونه کد دارد.معماری نرم افزاراِپیاتو با استفاده از الگوی معماری جدید Porto ساخته شده است. Porto یک الگوی معماری مدرن نرم افزاری است که برای کمک به توسعه دهندگان در سازماندهی کد خود به روشی فوق العاده پایدار طراحی شده است. این معماری برای پروژه های بزرگ و طولانی مدت بسیار مفید است، زیرا آنها با گذشت زمان به پیچیدگشان افزوده می شود.ویژگی هادر اینجا برخی از ویژگی های اِپیاتو ارائه شده است:احراز هویت با OAuth2.0 (با استفاده از لاراول پسپورت)کنترل دسترسی مبتنی بر نقش (RBAC)کوئری پارامترهای پیشفرض (جستو جو، مرتب سازی، گروه بندی، فیلتر و...)دارای endpoint های پیشفرض مفید برای مدیریت کاربران، نقش ها/مجوزها، توکن ها و موارد دیگرتولید کننده مستندات API (با استفاده از ApiDocJS)پشتیبانی از CORS (Cross-Origin Resource Sharing) و JSONP (JSON with padding)رمزگذاری/رمزگشایی خودکار ID ها برای جلوگیری از قرار گرفتن ID های واقعی در دسترس عمومقابلیت API Throttling (برای کنترل میزان ترافیک دریافتی و محافظت از سرور شما)پشتیبانی از ریکوئست پارامتر "include" برای بارگذاری روابط تو در توپشتیبانی از کش کردن داده ها (با پاک کردن خودکار در هنگام انجام عملیات های ایجاد، به روز رسانی و حذف)ورژن بندی API در URL یا Headerمدیریت خطاها (اکسپشن) با پاسخهای سفارشی با JSONپشتیبانی از Shallow ETag HTTP Headerمحلی سازی (با استفاده از هدر زبان (language header) به راحتی بین زبانها جابجا شوید)صفحه بندی خودکار داده ها (پیوندهای متا به داده های بعدی و قبلی)ریکویئست/رسپانس مانیتورینگ و کوئری دیباگری دیتابیسپشتیبانی پیشفرض از احراز هویت شبکه های اجتماعی "Google، Facebook، Twitter" (با استفاده از Laravel Socalite)قالب بندی رسپانس های JSON و نتایج صفحه بندی با استفاده از Transformers (با استفاده از Fractal)مدهای کمکی کارآمد برای تست سریعتر و لذت بخش تر (با استفاده از PHPUnit)پشتیبانی از قالب های رسپانس مختلف از جمله JSON API spec v1.0 ، Data Array & Data Cleanتبدیل خودکار تاریخها به قالب ISO در رسپانس هاالگوی معماری نرم افزاری قابل نگهداری و مقیاس پذیر (با استفاده از Porto SAP)دستورات مولد کد، برای تولید عملیات CRUD کامل و سایر دستورات مفید.جداسازی اجزای UI (وب ، API و CLI) (مسیرها، کنترل ها، درخواست ها، تست ها و...)لینک ها:وبسایت Apiatoالگوی معماری نرم افزاری Portoسرور Discordمن را در توییتر دنبال کنید Mohammad Alavi