#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 | نوع رأیی که باید حذف شود. این پارامتر باید یکی از دو مقدار زیر باشد:
|
Request Body
این اندپوینت به هیچ دادهای در بدنه درخواست (Request Body) نیاز ندارد.
فلوچارت منطق سرور (Server Logic Flow)
روند پردازش درخواست در سمت سرور به شرح زیر است:
- دریافت نظر (Find Comment): سیستم با استفاده از
commentIdارسالی در URL، نظر مربوطه را با متدfindOrFailاز دیتابیس جستجو میکند.- اگر نظر پیدا نشود، به صورت خودکار پاسخ 404 Not Found بازگردانده میشود.
- بررسی نوع عملیات (Check Action): مقدار پارامتر
actionبررسی میشود. - منطق کاهش شمارنده (Conditional Decrement):
- اگر `action` برابر با `like` باشد: سیستم ابتدا بررسی میکند که آیا شمارنده
likesبزرگتر از صفر است ($comment->likes > 0). اگر شرط برقرار باشد، یک واحد از آن کم میشود. در غیر این صورت (اگر شمارنده صفر باشد)، هیچ تغییری اعمال نمیشود. - اگر `action` برابر با `dislike` باشد: سیستم بررسی میکند که آیا شمارنده
dislikesبزرگتر از صفر است ($comment->dislikes > 0). اگر شرط برقرار باشد، یک واحد از آن کم میشود. در غیر این صورت، تغییری اعمال نمیشود.
- اگر `action` برابر با `like` باشد: سیستم ابتدا بررسی میکند که آیا شمارنده
- ذخیره تغییرات (Save Changes): تغییرات روی مدل
Commentدر دیتابیس ذخیره میشود ($comment->save()). - ارسال پاسخ نهایی (Return Response): یک پاسخ موفقیتآمیز با کد 200 حاوی شمارندههای بهروز شده بازگردانده میشود.
رفتار محافظتی: این منطق به طور هوشمند از منفی شدن شمارندهها جلوگیری میکند. اگر شمارنده یک نظر از قبل صفر باشد و درخواستی برای کاهش آن ارسال شود، مقدار آن تغییری نکرده و همان صفر باقی میماند.
Success Response
در صورت موفقیتآمیز بودن عملیات، سرور یک پاسخ با کد 200 به همراه مقادیر بهروز شدهی شمارندههای likes و dislikes برمیگرداند.
{
"status": true,
"time": 1715000000,
"data": {
"likes": 24,
"dislikes": 2
}
}
Error Response
- کد 404 (Not Found): در صورتی که
commentIdارسال شده در URL در دیتابیس موجود نباشد.