Skip to main content
#P1716

POST /v2/articles/{id}/views

Article: Increment Views

این اندپوینت وظیفه افزایش شمارنده بازدید یک مقاله خاص را بر عهده دارد.
این متد معمولاً زمانی فراخوانی می‌شود که کاربر وارد صفحه جزئیات مقاله (Single Page) می‌شود. عملیات افزایش بازدید به صورت مستقیم روی دیتابیس (Atomic) انجام شده و تعداد جدید بازدیدها بلافاصله برگردانده می‌شود.

Request Overview

URL: /v2/articles/{id}/views
Method: POST
Controller: ArticleController@incrementViews
Middleware: authWithJwt

Access Control

  • نیاز به توکن احراز هویت (JWT) دارد (طبق تعریف گروه Middleware).

Path Parameters

Parameter Type Description
id integer (الزامی) شناسه منحصر‌به‌فرد مقاله (Article ID) که در آدرس URL قرار می‌گیرد.

Logic Details

روند پردازش به شرح زیر است:

  1. جستجوی رکورد (Find or Fail):
    • از متد Article::findOrFail($id) استفاده می‌شود.
    • اگر مقاله‌ای با این شناسه وجود نداشته باشد، لاراول به صورت خودکار یک خطای 404 Not Found استاندارد پرتاب می‌کند و ادامه کد اجرا نمی‌شود.
  2. افزایش اتمیک (Atomic Increment):
    • از متد increment('views') استفاده می‌شود.
    • این دستور مستقیماً یک کوئری UPDATE articles SET views = views + 1 WHERE id = ... به دیتابیس ارسال می‌کند. این روش از Race Condition جلوگیری کرده و پرفورمنس بالایی دارد (نیازی به خواندن، ویرایش در PHP و ذخیره مجدد نیست).
  3. بازگشت پاسخ:
    • تعداد بازدیدهای جدید (آپدیت شده) همراه با برچسب زمان بازگردانده می‌شود.

Response Structure

پاسخ موفق (200 OK)

{
  "status": true,
  "time": 1715006000,
  "views": 1543 // تعداد بازدید جدید پس از افزایش
}

خطای یافت نشد (404 Not Found)

اگر شناسه مقاله در دیتابیس موجود نباشد (توسط findOrFail):

{
  "message": "No query results for model [App\\Models\\Article] 9999"
  // یا ساختار استاندارد خطای لاراول بسته به تنظیمات Exception Handler
}

Flowchart

Start Request
Find Article (findOrFail)
Exists?
No
Return 404
↓ Yes
Increment DB Column
UPDATE `views` = `views` + 1
Return JSON
(New View Count)