#P1717
RESOURCE /v2/articles
Article Resource Management
این بخش شامل ۵ اندپوینت استاندارد برای مدیریت کامل مقالات (Articles) میباشد.
ویژگیهای کلیدی این کنترلر شامل فیلترینگ پیشرفته در لیستگیری (بر اساس دستهبندی، تگ و مکان) و مدیریت روابط متا تگها (PageMetatags) هنگام ساخت و ویرایش است.
1. List Articles (Index)
/v2/articlesپارامترهای فیلترینگ (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)
/v2/articlesیک مقاله جدید ایجاد میکند. همزمان اگر آرایه 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)
/v2/articles/{id}جزئیات کامل یک مقاله را برمیگرداند. از Route Model Binding لاراول استفاده میکند (اگر پیدا نشود ۴۰۴ میدهد).
4. Update Article
/v2/articles/{id}اطلاعات مقاله را ویرایش میکند.
منطق هوشمند متاتگها: در آرایه metatags، اگر آیتمی دارای id باشد، آن رکورد در دیتابیس آپدیت میشود. اگر فاقد ID باشد، به عنوان یک متاتگ جدید برای این مقاله ایجاد میشود.
Item has "id"?
YES →
PageMetatag::find($id)->update() NO →
PageMetatag::create()5. Delete Article
/v2/articles/{id}مقاله را حذف میکند. متاتگهای وابسته (اگر Cascade در دیتابیس تنظیم شده باشد) حذف میشوند، در غیر این صورت فقط رکورد مقاله حذف میشود.
{
"status": true,
"time": 1715009000
}