#P1814
POST /b2c/v1/articles/{id}/views
POST /b2c/v1/articles/{id}/views
این اندپوینت برای افزایش شمارش بازدید مقاله استفاده میشود. هنگام نمایش جزئیات مقاله در سمت کاربر (مانند صفحهی article detail)، فرانتاند میتواند پس از بارگذاری موفق مقاله، این متد را برای ثبت بازدید فراخوانی کند. افزایش بازدید مستقیماً در دیتابیس انجام میشود و مقدار جدید بازگردانده میشود.
Endpoint Information
URL:
/b2c/v1/articles/{id}/viewsMethod: POST
Controller:
V1ArticleController@incrementViewsMiddleware:
web (بدون JWT)Model:
ArticleAction: افزایش مقدار
views در ستون پایگاه دادهپارامترهای مسیر (Path Parameter)
| نام | نوع | الزامی | توضیح |
|---|---|---|---|
id |
integer | ✅ | شناسه عددی مقاله که میخواهیم بازدید آن را افزایش دهیم |
بدنه درخواست (Request Body)
{}
// بدون نیاز به بدنه خاص؛ صرفاً فراخوانی ساده POST کافی است.
خروجی موفق (Success Response)
{
"status": true,
"time": 1733810253,
"views": 121
}
در صورت بروز خطا (Error Response)
{
"message": "No query results for model [App\\Models\\Article] 9999",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"status_code": 404
}
فلوچارت منطق عملکرد (Flowchart)
📥 ۱. دریافت شناسه
{id} از مسیر درخواست↓
🔍 ۲. اجرای
در صورت نبود مقاله ⇒ خطای ۴۰۴ با پیام ModelNotFoundException برگردانده میشود.
Article::findOrFail($id)در صورت نبود مقاله ⇒ خطای ۴۰۴ با پیام ModelNotFoundException برگردانده میشود.
↓
➕ ۳. فراخوانی متد
مقدار ستون
$article->increment('views')مقدار ستون
views در پایگاه داده یک واحد افزایش مییابد.↓
✅ ۴. پاسخ JSON شامل وضعیت، زمان (timestamp) و مقدار جدید
views برگردانده میشود.نکات فنی برای توسعهدهنده (Developer Notes)
- از تابع Eloquent
increment()برای جلوگیری از race condition در محیطهای همزمان (concurrent) استفاده شده است. - در صورت نیاز به جلوگیری از افزایش تکراری در همان session، توصیه میشود کنترل فرانتاند (یا cookie flag) اضافه شود.
- فیلد
viewsباید از نوعunsignedBigIntegerباشد تا در بازدید بالا overflow نکند. - بهتر است عملیات آماری (views امروز، بازدید یکتا و …) در آینده با Redis counter یا جدول جداگانه مدیریت شود.