Skip to main content
#P1717

RESOURCE /v2/articles

Article Resource Management

این بخش شامل ۵ اندپوینت استاندارد برای مدیریت کامل مقالات (Articles) می‌باشد.
ویژگی‌های کلیدی این کنترلر شامل فیلترینگ پیشرفته در لیست‌گیری (بر اساس دسته‌بندی، تگ و مکان) و مدیریت روابط متا تگ‌ها (PageMetatags) هنگام ساخت و ویرایش است.


1. List Articles (Index)

URL: /v2/articles
Method: GET
Controller: ArticleController@index

پارامترهای فیلترینگ (Query Params)

Parameter Type Description
categories string (JSON) آرایه‌ای از دسته‌بندی‌ها به صورت رشته JSON.
مثال: ["tech", "news"]
از منطق orWhereJsonContains استفاده می‌کند.
tags string (JSON) آرایه‌ای از تگ‌ها به صورت رشته JSON.
مثال: ["laravel", "api"]
place mixed شناسه (ID) یا نام مستعار (Slug) یک مکان.
منطق خاص: ابتدا ID مکان را از جدول articles_places پیدا می‌کند، سپس دسته‌بندی‌های مرتبط را از articles_categories می‌یابد و مقالات را بر اساس ستون places فیلتر می‌کند.
sortById boolean اگر ارسال شود، ترتیب DESC (نزولی) بر اساس ID اعمال می‌شود. در غیر این صورت پیش‌فرض ASC است.
limit integer محدودیت تعداد رکوردها قبل از صفحه‌بندی (توجه: نتیجه نهایی همچنان Paginate شده است).

مثال پاسخ (Response)

{
  "status": true,
  "time": 1715008000,
  "data": [
    { "id": 10, "title": "...", "views": 150, ... } // ArticleResource Object
  ],
  "links": {
    "first": "...",
    "last": "...",
    "prev": null,
    "next": "..."
  }
}

2. Create Article (Store)

URL: /v2/articles
Method: POST
Controller: ArticleController@store

یک مقاله جدید ایجاد می‌کند. همزمان اگر آرایه metatags ارسال شود، رکوردهای مربوطه در جدول page_metatags ساخته می‌شوند.
فیلد operator به صورت خودکار از توکن کاربر احراز هویت شده برداشته می‌شود.

بدنه درخواست (Body Parameters)

Field Type Description
title string (الزامی) عنوان مقاله
slug string (الزامی) آدرس یکتا
branch integer (الزامی) شناسه شعبه
categories array لیست دسته‌بندی‌ها (در دیتابیس JSON می‌شود)
tags array لیست تگ‌ها (در دیتابیس JSON می‌شود)
sub_title string عنوان فرعی
body text متن اصلی مقاله
summary text خلاصه مقاله
thumbnail string آدرس تصویر شاخص
published_at datetime تاریخ انتشار (پیش‌فرض: زمان حال)
score integer امتیاز مقاله
metatags array[obj] لیست متا تگ‌ها برای سئو. ساختار هر آبجکت:
{ "key": "description", "value": "text..." }

3. Show Article (Show)

URL: /v2/articles/{id}
Method: GET
Controller: ArticleController@show

جزئیات کامل یک مقاله را برمی‌گرداند. از Route Model Binding لاراول استفاده می‌کند (اگر پیدا نشود ۴۰۴ می‌دهد).


4. Update Article

URL: /v2/articles/{id}
Method: PUT/PATCH
Controller: ArticleController@update

اطلاعات مقاله را ویرایش می‌کند.
منطق هوشمند متاتگ‌ها: در آرایه metatags، اگر آیتمی دارای id باشد، آن رکورد در دیتابیس آپدیت می‌شود. اگر فاقد ID باشد، به عنوان یک متاتگ جدید برای این مقاله ایجاد می‌شود.

Start Update
Update Main Article Fields
Has Metatags?
↓ Yes
Loop through items:

Item has "id"?
YESPageMetatag::find($id)->update()
NOPageMetatag::create()
Return { status: true }

5. Delete Article

URL: /v2/articles/{id}
Method: DELETE
Controller: ArticleController@destroy

مقاله را حذف می‌کند. متاتگ‌های وابسته (اگر Cascade در دیتابیس تنظیم شده باشد) حذف می‌شوند، در غیر این صورت فقط رکورد مقاله حذف می‌شود.

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