Skip to main content
#P1733

PUT /v2/comments/{id}

Update Comment

این اندپوینت برای به‌روزرسانی اطلاعات یک نظر موجود استفاده می‌شود. همانند اندپوینت ایجاد نظر، داده‌های ارسالی برای به‌روزرسانی نیز باید ابتدا رمزنگاری شده و سپس ارسال شوند.
این متد از قابلیت Route Model Binding لاراول استفاده می‌کند. به این معنی که لاراول ابتدا به صورت خودکار مدل Comment مربوط به {id} ارسالی در URL را پیدا می‌کند و سپس عملیات به‌روزرسانی را روی آن انجام می‌دهد. اگر شناسه نامعتبر باشد، پاسخ 404 بازگردانده می‌شود.


Encryption Flow

فرآیند رمزنگاری و ارسال داده‌ها برای این اندپوینت دقیقاً مشابه اندپوینت ایجاد نظر (Create Comment) است. خلاصه‌ی مراحل به شرح زیر است:

  1. ساخت آبجکت JSON: داده‌های مورد نظر برای آپدیت را در قالب یک آبجکت JSON آماده کنید.
  2. رمزنگاری و Base64: آبجکت JSON را با کلید عمومی (Public Key) شعبه رمزنگاری کرده و به Base64 تبدیل کنید.
  3. ارسال درخواست: درخواست PUT را به همراه بدنه حاوی فیلد data (شامل رشته نهایی) ارسال نمایید.

 

توجه: میدلور decryptData در سمت سرور، با استفاده از کلید خصوصی (Private Key)، داده‌ها را رمزگشایی کرده و برای پردازش به کنترلر تحویل می‌دهد.

Update an Existing Comment

URL: /v2/comments/{id}
Method: PUT
Controller: CommentController@update
Middleware Chain: `authWithJwt`, `decryptData`

Path Parameters

Parameter Type Description
id integer شناسه منحصر به فرد نظری که باید به‌روزرسانی شود (Comment ID).

Request Body Structure (Before Encryption)

آبجکت JSON که باید رمزنگاری و در فیلد data ارسال شود، می‌تواند شامل فیلدهای زیر باشد. تمام فیلدها اختیاری هستند و فقط فیلدهایی که قصد تغییر آن‌ها را دارید، ارسال کنید.

Parameter Type Description Validation
content string متن جدید نظر. Required
status integer وضعیت جدید نظر (مثلاً 1 برای "تایید شده"). Required, Integer
flagged boolean علامت‌گذاری نظر به عنوان "پرچم‌دار". مقدار true یا false. Required, Boolean
اعتبارسنجی: فیلدهای ورودی توسط UpdateCommentRequest اعتبارسنجی می‌شوند. هر سه فیلد باید در آبجکت JSON وجود داشته باشند.

Request Examples

مرحله ۱: ساختار JSON خام (قبل از رمزنگاری)

{
    "content": "متن ویرایش شده نظر.",
    "status": 1,
    "flagged": false
}

مرحله ۲: بدنه نهایی درخواست (بعد از رمزنگاری و Base64)

{
    "data": "AbC...[Encrypted & Base64 Encoded String]...dEfG=="
}

Success Response

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

{
    "status": true,
    "time": 1715000000
}

Error Responses

  • کد 400 (Bad Request): در صورتی که میدلور decryptData نتواند داده‌ها را رمزگشایی کند، این خطا به همراه پیام Decryption failed. بازگردانده می‌شود.
  • کد 404 (Not Found): اگر شناسه‌ی {id} ارسال شده در URL در دیتابیس موجود نباشد.
  • کد 422 (Unprocessable Entity): اگر داده‌های رمزگشایی شده از اعتبارسنجی UpdateCommentRequest عبور نکنند (مثلاً یکی از فیلدها ارسال نشود).