|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent İstemci Protokolü Referansı > 9. CRUD işlemcisi (/crud) > 9.2 /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.
Dikkat. Dikkat
Tanınmayan bir sorgu parametresi
400alır, sessizce yok sayılmaz — süzdüğünü sanıp bütün tabloyu okuyan bir çağıran üretmemek için. Bunun sonucu olaraklimit,offset,order,qvecountadları 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;
offsetkullanırkenorderda 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
UPPERiş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.