ikinci temizlik tamamlandı
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# Dynamic Resource API Usage Guide / Dinamik Kaynak API Kullanım Kılavuzu
|
||||
|
||||
This guide details how to use the Dynamic Resource API endpoint (`/api/{table}/{action}`) and explains each parameter in depth.
|
||||
Bu kılavuz, Dinamik Kaynak API uç noktasının (`/api/{table}/{action}`) nasıl kullanılacağını ve her bir parametrenin ne işe yaradığını detaylandırır.
|
||||
|
||||
---
|
||||
|
||||
## 1. Endpoint Structure / Uç Nokta Yapısı
|
||||
|
||||
**URL:** `POST /api/{table}/{action}`
|
||||
(Also supports GET for read operations, but POST is recommended for complex filters)
|
||||
(Okuma işlemleri için GET de desteklenir ancak karmaşık filtreler için POST önerilir)
|
||||
|
||||
### Path Parameters / Yol Parametreleri
|
||||
|
||||
#### 1. `{table}`
|
||||
This parameter defines the target resource. It can be one of two things:
|
||||
Bu parametre hedef kaynağı tanımlar. İki şeyden biri olabilir:
|
||||
|
||||
* **Module Slug (Recommended / Önerilen):** e.g., `test-packages`, `weld-log`, `radiographic-test`.
|
||||
* **How it works:** The system looks up this slug in the `types` table.
|
||||
* **Security:** Checks module-based permissions (`isAuth`).
|
||||
* **Result:** Resolves to the actual database table defined in the module settings (e.g., `test-packages` -> `test_packages`).
|
||||
* **Nasıl çalışır:** Sistem bu kısa adı `types` tablosunda arar.
|
||||
* **Güvenlik:** Modül bazlı izinleri kontrol eder.
|
||||
* **Sonuç:** Modül ayarlarında tanımlı gerçek veritabanı tablosuna yönlenir.
|
||||
|
||||
* **Table Name (Direct / Direkt):** e.g., `users`, `logs`.
|
||||
* **How it works:** Accesses the database table directly.
|
||||
* **Security:** Requires standard API authentication (Bearer Token). Bypasses module permissions.
|
||||
* **Nasıl çalışır:** Veritabanı tablosuna doğrudan erişir.
|
||||
* **Güvenlik:** Standart API kimlik doğrulaması gerektirir. Modül izinlerini atlar.
|
||||
|
||||
#### 2. `{action}`
|
||||
Defines the operation to perform.
|
||||
Gerçekleştirilecek işlemi tanımlar.
|
||||
|
||||
| Action | HTTP Method Equivalent | Permission Required (Module) | Description / Açıklama |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| `read`, `list`, `get` | GET | **read** | Fetch records. (Kayıtları getir) |
|
||||
| `create`, `store`, `insert` | POST | **write** | Create a new record. (Yeni kayıt oluştur) |
|
||||
| `update`, `save` | PUT/PATCH | **write** | Update an existing record. (Kayıt güncelle) |
|
||||
| `delete`, `remove` | DELETE | **full_control** | Delete a record. (Kayıt sil) |
|
||||
| `view`, `render` | GET | **read** | Render a server-side Blade view. (Blade şablonu render et) |
|
||||
|
||||
---
|
||||
|
||||
## 2. Body Parameters / Gövde Parametreleri
|
||||
|
||||
These parameters are sent in the JSON body of the request.
|
||||
Bu parametreler isteğin JSON gövdesinde gönderilir.
|
||||
|
||||
### `filter` (Array/JSON)
|
||||
Used for filtering data. Supports **DevExtreme** filter syntax.
|
||||
Veriyi filtrelemek için kullanılır. **DevExtreme** filtre sözdizimini destekler.
|
||||
|
||||
* **Simple Filter:** `["field", "operator", "value"]`
|
||||
* **Complex Filter:** `[["field1", "=", "value1"], "and", ["field2", ">", 10]]`
|
||||
* **Operators:** `=`, `<>`, `>`, `>=`, `<`, `<=`, `contains`, `notcontains`, `startswith`, `endswith`.
|
||||
|
||||
**Example / Örnek:**
|
||||
```json
|
||||
"filter": [
|
||||
["status", "=", "active"],
|
||||
"and",
|
||||
["created_at", ">", "2023-01-01"]
|
||||
]
|
||||
```
|
||||
|
||||
### `sort` (Array/JSON)
|
||||
Defines sorting order.
|
||||
Sıralama düzenini belirler.
|
||||
|
||||
**Example / Örnek:**
|
||||
```json
|
||||
"sort": [
|
||||
{ "selector": "created_at", "desc": true },
|
||||
{ "selector": "name", "desc": false }
|
||||
]
|
||||
```
|
||||
|
||||
### `skip` (Integer) & `take` (Integer)
|
||||
Used for pagination.
|
||||
Sayfalama için kullanılır.
|
||||
|
||||
* `skip`: How many records to skip (offset). (Kaç kayıt atlanacak)
|
||||
* `take`: How many records to return (limit). (Kaç kayıt getirilecek)
|
||||
|
||||
### `columns` (Array/String)
|
||||
Used to retrieve specific columns. If omitted or null, returns all columns (`*`).
|
||||
Belirli sütunları getirmek için kullanılır. Atlanırsa veya null ise tüm sütunları (`*`) döndürür.
|
||||
|
||||
* **Format:** JSON Array of strings or Comma-separated string.
|
||||
* **Format:** JSON String dizisi veya virgülle ayrılmış string.
|
||||
|
||||
**Example / Örnek:**
|
||||
```json
|
||||
"columns": ["id", "title", "status"]
|
||||
```
|
||||
**Or / Veya:**
|
||||
```json
|
||||
"columns": "id, title, status"
|
||||
```
|
||||
|
||||
### `data` (Object)
|
||||
**Required for:** `create`, `update`.
|
||||
Contains the fields and values to be saved.
|
||||
Kaydedilecek alanları ve değerleri içerir.
|
||||
|
||||
**Note:** The system automatically filters out fields that do not exist in the database table to prevent errors.
|
||||
**Not:** Sistem, veritabanı tablosunda olmayan alanları hataları önlemek için otomatik olarak filtreler.
|
||||
|
||||
**Example / Örnek:**
|
||||
```json
|
||||
"data": {
|
||||
"name": "Project X",
|
||||
"status": "pending",
|
||||
"budget": 5000
|
||||
}
|
||||
```
|
||||
|
||||
### `id` or `key` (Integer/String)
|
||||
**Required for:** `update`, `delete`.
|
||||
Identifier of the record to update or delete.
|
||||
Güncellenecek veya silinecek kaydın kimliği.
|
||||
|
||||
### `file` (String)
|
||||
**Required for:** `view`.
|
||||
The name of the Blade file to render (without `.blade.php`).
|
||||
Render edilecek Blade dosyasının adı (`.blade.php` olmadan).
|
||||
|
||||
* **Search Path 1:** `resources/views/admin/{table}/{file}.blade.php`
|
||||
* **Search Path 2:** `resources/views/admin/type/{table}/{file}.blade.php`
|
||||
|
||||
---
|
||||
|
||||
## 3. Example Scenarios / Örnek Senaryolar
|
||||
|
||||
### Scenario 1: Fetch Data with Filtering (Veri Çekme ve Filtreleme)
|
||||
**Request:** `POST /api/weld-log/read`
|
||||
```json
|
||||
{
|
||||
"filter": [["weld_no", "contains", "W-10"]],
|
||||
"sort": [{"selector": "id", "desc": true}],
|
||||
"take": 10
|
||||
}
|
||||
```
|
||||
|
||||
### Scenario 2: Update a Record (Kayıt Güncelleme)
|
||||
**Request:** `POST /api/users/update`
|
||||
```json
|
||||
{
|
||||
"id": 15,
|
||||
"data": {
|
||||
"email": "new@example.com",
|
||||
"status": "active"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Scenario 3: Render a Form View (Form Görünümü Render Etme)
|
||||
**Request:** `POST /api/test-packages/view`
|
||||
```json
|
||||
{
|
||||
"file": "form",
|
||||
"id": 5
|
||||
}
|
||||
```
|
||||
* **Looks for:** `admin.type.test_packages.form` or `admin.test_packages.form` view.
|
||||
* **Returns:** HTML content of the form.
|
||||
Reference in New Issue
Block a user