Repository navigation
CRUD ve Sorgular
English · Türkçe · Languages / Diller
Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe
Bir SQL resource, izin verilen HTTP işlemleriyle tabloyu eşler. En küçük kullanışlı kaynak:
{
"resources": [
{
"database": "primary",
"table": "notes",
"path": "notes",
"auto_create": true,
"columns": {
"id": {"type": "integer", "primary_key": true, "nullable": false},
"title": {"type": "string", "nullable": false, "max_length": 160},
"status": {"type": "string", "default": "draft", "index": true}
},
"writable_fields": ["title", "status"],
"allowed_filters": ["status"],
"filter_operators": ["eq", "ne", "in"],
"search_fields": ["title"],
"allowed_sort": ["id", "title"],
"permissions": {
"list": "notes.list", "read": "notes.read", "create": "notes.create",
"update": "notes.update", "delete": "notes.delete"
}
}
]
}P proje API prefix'i olsun. Endpointlerin varlığı enabled, allowed_actions, batch/count ayarlarına bağlıdır.
| Yöntem/yol | Davranış |
|---|---|
GET P/notes |
Sınırlı liste |
POST P/notes |
Yeni kayıt |
GET P/notes/{item_id} |
Tek kayıt |
PATCH P/notes/{item_id} |
Gönderilen alanları değiştirir |
PUT P/notes/{item_id} |
Yazılabilir temsilin yerini alır; kimlik/politika alanları korunur |
DELETE P/notes/{item_id} |
Silme veya yapılandırıldıysa soft-delete |
GET P/notes/_count |
Aynı görünürlük/filtre politikasında sayım |
Tam listeyi forge routes ve proje /_openapi.json çıktısından alın. Statik Wiki tablosunu tüm uygulamaların zorunlu API'si olarak kullanmayın.
readable_fields okuma allowlist'i, hidden_fields gizlenecek alanlar, writable_fields istemcinin yazabileceği alanlardır. Açık allowlist'ler tercih edin. create_schema ve update_schema ayrıca JSON Schema doğrulaması uygular; alanın veritabanında var olması istemcinin yazabileceği anlamına gelmez.
Primary key, tenant, owner ve soft-delete alanları server politikasına aittir. Bunları istemci yazma listesine koymayın. owner_actions ve tenant_field için satır yetkileri sayfasını okuyun.
GET P/notes?status=draft&limit=20&offset=0&sort=-id
GET P/notes?status__in=draft,published&q=api
SQL operatörleri: eq, ne, gt, gte, lt, lte, in, like, ilike, isnull. Hem alan hem operatör allowlist'te olmalıdır. q yalnız search_fields üzerinde arar. sort=-field azalan sıralamadır.
v0.5.1 ayrıntısı: SQL filtreleyici tanınmayan veya izin verilmeyen filtreyi sessizce atlar. Yazım hatasında sorgunun beklediğinizden geniş sonuç dönmediğini kontrol edin. Filtreler yetkilendirme değildir; tenant/owner sınırı ayrı uygulanır.
Offset yanıtı items, limit, offset içerir; otomatik total alanı vaat edilmez. Toplam gerektiğinde _count kullanılır. Sayım büyük tablolarda ek maliyet oluşturur.
pagination_mode: "cursor", cursor_field ve primary key bağlama sıralamasıyla kararlı keyset pagination sağlar. Yanıt next_cursor ve has_more içerir. Cursor opaque kabul edilir, sunucuya aynen geri gönderilir. Cursor modunda offset ve sort reddedilir; offset modunda cursor reddedilir. İndeksleri seçtiğiniz cursor alanı ve primary key'e göre tasarlayın.
Python SDK'nın sync iter_items yardımcısı offset kullanır; cursor kaynağı için kendi sınırlı döngünüzde next_cursor izleyin.
batch_enabled varsayılan olarak kapalıdır; max_batch_size varsayılanı 100'dür. Batch endpointleri için gerçek OpenAPI gövde sözleşmesini kullanın; REST istemcinizin her batch işlemini tek büyük atomik iş saymasına izin vermeyin. Soft-delete görünürlüğü list/read/count'ta uygulanır; satırın fiziksel olarak silinmemesi retention ve disk temizliği politikasını ayrıca gerektirir.
Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.