|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 5. Servis yüzeyleri > 5.7 /crud/data — REST veri erişimi |
Kaynak modeli standarttır: /crud/data/<tablo> koleksiyon,
/crud/data/<tablo>/<anahtar> tek kayıt.
| İstek | Ne yapar | Yanıt |
|---|---|---|
GET /crud/data/<tablo> | Satırları listeler; sayfalama, süzme, sıralama ve arama kabul eder. | 200 |
GET /crud/data/<tablo>/<anahtar> | Tek satır. | 200 |
POST /crud/data/<tablo> | Yeni satır. Gövde: {"KOLON": değer, …} | 201 |
PUT /crud/data/<tablo>/<anahtar> | Upsert — satır varsa güncellenir, yoksa oluşturulur. | 200 / 201 |
PATCH /crud/data/<tablo>/<anahtar> | Yalnızca gövdedeki kolonları günceller. | 200, satır yoksa 404 |
DELETE /crud/data/<tablo>/<anahtar> | Satırı siler. | 200, satır yoksa 404 |
Bu yol kimlik ister ve kimliğin kaynağını uygulamanın authMode
anahtarı seçer:
authMode | Kim doğrular, yetki kimin |
|---|---|
session (öndeğer) | Oturum yöneticisi: bütün fiiller Basic auth ile MASTER login'i olarak doğrulanmış bir yönetici (SYSADMIN rolünün üyesi ya da SYSDBA) oturumu arar; kimliksiz istek 401, rolü olmayan 403 alır. Veritabanına MASTER kaydının parametrelerindeki kimlikle bağlanılır. Gerekçesi yeteneğin kendisidir: uç nokta uygulamanın veritabanındaki herhangi bir tabloyu okuyabilir ve yazabilir. |
database | İstekteki Basic kullanıcı adı ve parola veritabanına iletilir: bağlantı o kimlikle açılır, doğrulamayı depolama motoru yapar (Firebird kullanıcısı / PostgreSQL rolü) ve yetki de onundur — GRANT'ı olmayan tablo motorun kendi hatasıyla (400, ayrıntı günlükte) reddedilir. Oturuma ve yönetici rolüne bakılmaz. Kimlik bilgisi olmayan istek 401 + WWW-Authenticate, motorun reddettiği kimlik de 401 alır (yanlış parola ile ulaşılamayan sunucu istemciye aynı görünür; gerçek neden günlüktedir, parola günlüğe yazılmaz). sqlite'ta kullanıcı kavramı olmadığı için bu kip seçilmemelidir. |
İki kipte de /crud/metadata aynı kapıdan geçer. database kipinde
/crud/fastapi uç noktaları da istekteki Basic kimliğiyle koşar: SQL OPEN /
SQL EXECUTE veritabanına o kimlikle bağlanır, MQL OPEN /
MQL EXECUTE aynı kimliği IVEDI motoruna iter (MASTER login'i, harita, veritabanı
kullanıcısı — CURRENT_USER ve haklar bu kimliğin olur; ad önce yazıldığı gibi, sonra
büyük harfe katlanarak aranır, yani sysdba yazmak yeter). Kimliksiz istek
401, motorun ya da veritabanının reddettiği kimlik 401, havuz sınırı
503 alır. session kipinde ROLE_KODU
kapısı ve conf'un veritabanı kimliği sürer; motor bağlantısı ise Basic auth ile doğrulanmış
oturumda o login'in kimliğiyle koşar (MQL'de CURRENT_USER oturum
kullanıcısıdır), kimliksiz istekte kimliksiz kalır. endpoints ve
fastapihtml her iki kipte de kimliksizdir.
Anahtar kolonu, kataloğun birincil anahtarıdır. Tek kolonlu bir birincil
anahtarı olmayan kaynakta tek kayıt yolu 400 ile reddedilir — üç
durum ayrı ayrı bildirilir: anahtar yok, anahtar birden çok kolonlu, ya da sağlayıcı anahtarı
veremiyor. Rastgele bir kolonu anahtar saymak sessizce yanlış satırı hedeflerdi. Görünümlerin ve
anahtarsız tabloların koleksiyon yolu her zaman açıktır; tek kayıt yerine süzgeç
kullanın.
| Parametre | Anlamı |
|---|---|
limit=<n> | En fazla n satır. Öndeğer 1000, üst sınır 10000. |
offset=<n> | İlk n satırı atlar. |
order=<kolon>[.asc|.desc][,…] | Sıralama. |
q=<metin> | Bütün düz metin kolonlarında arar (VEYA), büyük/küçük harf duyarsız. En fazla 200 bayt. |
count=true | Yanıta totalCount ekler — ayrı bir COUNT(*) sorgusu koşar. |
<kolon>=[<işleç>.]<değer> | Süzgeç. İşleç verilmezse eq. İşleçler: eq ne lt lte gt gte like nlike in nin isnull. in/nin değeri virgülle ayrılır, isnull değeri true/false. |
Yanıt offset, limit ve rowCount taşır;
count=true ile totalCount da. Tek kayıt yolunda sorgu seçenekleri
okunmaz.
Tanınmayan bir sorgu parametresi 400 alır, sessizce yok
sayılmaz — süzdüğünü sanıp bütün tabloyu okuyan bir çağıran üretmemek için. Bunun sonucu olarak
limit, offset, order, q ve count
adları rezervedir: aynı adı taşıyan bir kolon bu uç noktadan süzülemez.
Sıralamasız sayfalama deterministik değildir. Motorlar sıralamasız bir
sorguda satır sırasını garanti etmez; offset kullanırken order da
verin, yoksa sayfalar arasında satır tekrarlanabilir ya da atlanabilir.
Arama büyük/küçük harf eşlemesi veritabanının harmanlamasına bağlıdır.
Aranan metin istemci tarafında ICU ile büyütülür, kolon ise motorda; motorun UPPER
işlevi ASCII dışı harfleri büyütmüyorsa (sqlite'ın belgelenmiş davranışı, ve C benzeri yerelde
kurulmuş bir PostgreSQL veritabanı) Türkçe harf içeren aramalar eşleşmeyebilir. Çaresi
veritabanını Unicode farkındalığı olan bir harmanlamayla kurmaktır.