طراحی APIهای REST با لاراول؛ اعتبارسنجی، ریسورس و محدودسازی نرخ

قطعه‌هایی که API لاراول را تمیز و امن نگه می‌دارند: فرم ریکوئست برای اعتبارسنجی، API ریسورس برای شکلِ پاسخِ یکدست و throttling برای حفاظت از مسیرهای عمومی.

socials-vertical icons
طراحی APIهای REST با لاراول؛ اعتبارسنجی، ریسورس و محدودسازی نرخ post featured image

طراحی APIهای REST با لاراول

از شکل پاسخ‌ها شروع کن

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

اعتبارسنجی متعلق به Form Request است

نوشتن قوانین داخل کنترلر جواب می‌دهد ولی مقیاس نمی‌شود. با Form Request اعتبارسنجی، مجوزدهی و قوانین کنار هم می‌نشینند و می‌شود جداگانه تستشان کرد.

  • قوانین را به دامنه‌ی مربوطه بچسبان.
  • خطای پیش‌فرض ۴۲۲ را برگردان؛ بیشتر کلاینت‌ها آن را بلدند.
  • برای موارد خاص، چند rule سفارشی بنویس به‌جای اینکه شرایط را در کنترلر تلنبار کنی.

محدودسازی نرخ یک ویژگی امنیتی است، نه یک آپشن

یک مسیر عمومیِ نوشتن تا وقتی throttle نباشد طعمه‌ی اسپم است. برای مسیر، محدودیتِ منطقی (مثلاً چند درخواست در دقیقه) بگذار و بعد ببین کلاینت‌های واقعی به چه چیزی نیاز دارند.

این وب‌سایت چه می‌کند

API وبلاگ و سایت دقیقاً همین الگو را دنبال می‌کنند: فرم ریکوئست برای اعتبارسنجی، JSON ریسورس برای خروجی، و throttle برای هر مسیر تا ترافیک ناشناس نتواند دیتابیس را غرق کند.

جمع‌بندی

قراردادهای کوچک و خسته‌کننده از انتزاع‌های هوشمند بهترند. شکلِ پاسخِ یکدست، اعتبارسنجی متمرکز و throttle منطقی، API را از «روی من کار می‌کند» به «روی همه کار می‌کند» می‌رسانند.

socials-vertical icons

130

socials-vertical icons

1600

you might also like...

Building Robust RESTful APIs with Laravel: Validation, Resources, and Rate Limiting post featured imageBuilding Robust RESTful APIs with Laravel: Validation, Resources, and Rate Limiting

The pieces that keep a Laravel API clean and safe: form requests for validation, API resources for a consistent response shape, and throttling to protect public endpoints.

parsaaghayi's blog logoparsaaghayi's blog logo

© 2024

All Rights Reserved , Inc.

parsa aghayi
طراحی APIهای REST با لاراول؛ اعتبارسنجی، ریسورس و محدودسازی نرخ | Parsa Aghayi's Blog