Skip to main content
#P1735

DELETE /v2/comments/{commentId}/{action}

Remove a Like or Dislike from a Comment

این اندپوینت برای کاهش (حذف) یک لایک یا دیسلایک از یک نظر مشخص استفاده می‌شود. این عملیات، معکوس اندپوینت POST برای افزودن لایک/دیسلایک است و به کاربر اجازه می‌دهد تا رأی خود را پس بگیرد.


Decrement Like/Dislike Counter

URL: /v2/comments/{commentId}/{action}
Method: DELETE
Controller: CommentController@removeLikeOrDislike
Middleware: `authWithJwt`

Path Parameters

Parameter Type Description
commentId integer شناسه منحصر به فرد نظری که رأی آن باید حذف شود.
action string نوع رأیی که باید حذف شود. این پارامتر باید یکی از دو مقدار زیر باشد:
  • like: برای کاهش شمارنده لایک.
  • dislike: برای کاهش شمارنده دیسلایک.

Request Body

این اندپوینت به هیچ داده‌ای در بدنه درخواست (Request Body) نیاز ندارد.

فلوچارت منطق سرور (Server Logic Flow)

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

  1. دریافت نظر (Find Comment): سیستم با استفاده از commentId ارسالی در URL، نظر مربوطه را با متد findOrFail از دیتابیس جستجو می‌کند.
    • اگر نظر پیدا نشود، به صورت خودکار پاسخ 404 Not Found بازگردانده می‌شود.
  2. بررسی نوع عملیات (Check Action): مقدار پارامتر action بررسی می‌شود.
  3. منطق کاهش شمارنده (Conditional Decrement):
    • اگر `action` برابر با `like` باشد: سیستم ابتدا بررسی می‌کند که آیا شمارنده likes بزرگتر از صفر است ($comment->likes > 0). اگر شرط برقرار باشد، یک واحد از آن کم می‌شود. در غیر این صورت (اگر شمارنده صفر باشد)، هیچ تغییری اعمال نمی‌شود.
    • اگر `action` برابر با `dislike` باشد: سیستم بررسی می‌کند که آیا شمارنده dislikes بزرگتر از صفر است ($comment->dislikes > 0). اگر شرط برقرار باشد، یک واحد از آن کم می‌شود. در غیر این صورت، تغییری اعمال نمی‌شود.
  4. ذخیره تغییرات (Save Changes): تغییرات روی مدل Comment در دیتابیس ذخیره می‌شود ($comment->save()).
  5. ارسال پاسخ نهایی (Return Response): یک پاسخ موفقیت‌آمیز با کد 200 حاوی شمارنده‌های به‌روز شده بازگردانده می‌شود.
رفتار محافظتی: این منطق به طور هوشمند از منفی شدن شمارنده‌ها جلوگیری می‌کند. اگر شمارنده یک نظر از قبل صفر باشد و درخواستی برای کاهش آن ارسال شود، مقدار آن تغییری نکرده و همان صفر باقی می‌ماند.

Success Response

در صورت موفقیت‌آمیز بودن عملیات، سرور یک پاسخ با کد 200 به همراه مقادیر به‌روز شده‌ی شمارنده‌های likes و dislikes برمی‌گرداند.

{
    "status": true,
    "time": 1715000000,
    "data": {
        "likes": 24,
        "dislikes": 2
    }
}

Error Response

  • کد 404 (Not Found): در صورتی که commentId ارسال شده در URL در دیتابیس موجود نباشد.