پایگاهداده و مجموعهها
دادهٔ مالکمحور با نمونههای JavaScript و Python.
مجموعه و ردیف
دادهٔ Starter در PostgreSQL نگهداری میشود و از API مجموعههای JSON قابل استفاده است. هر ردیف یک شیء JSON تا ۱۵ KB دارد. مجموعهٔ records از ابتدا وجود دارد. SQL دلخواه، اتصال مستقیم PostgreSQL، Realtime و افزونهها در Starter ارائه نمیشوند؛ آنها به ابر اختصاصی تعلق دارند.
ساخت مجموعه از سرور
POST /v1/cloud/{id}/database با کلید مدیریت:
import json, os, urllib.request, urllib.error
payload = {
"action": "create_collection",
"name": "notes",
"public_read": False
}
request = urllib.request.Request(
"https://api.sarovi.ir/v1/cloud/{id}/database",
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": "Bearer " + os.environ["SAROVI_API_KEY"],
"Content-Type": "application/json"
},
method="POST"
)
try:
with urllib.request.urlopen(request, timeout=300) as response:
result = json.load(response)
print(result)
except urllib.error.HTTPError as error:
detail = json.load(error)
raise RuntimeError(f"{error.code}: {detail['error'].get('code', detail['error'].get('type', 'HTTP_ERROR'))}") from errorکلید را در متغیر محیطی SAROVI_API_KEY قرار بده. بدون نصب کتابخانه؛ با Python استاندارد.
نام مجموعه با حرف کوچک شروع میشود و حروف کوچک، اعداد و زیرخط میپذیرد. public_read:false دسترسی خواندن را به مالک ردیف محدود میکند. true همهٔ ردیفهای آن مجموعه را برای دارندهٔ کلید عمومی قابل خواندن میکند؛ برای دادهٔ حساس استفاده نکنید.
خواندن و نوشتن از برنامه
نمونهها از تابع cloud در راهنمای ورود استفاده میکنند. ابتدا کاربر وارد شده باشد.
const inserted = await cloud("/data/notes", "POST", { title: "اولین یادداشت" });
const rows = await cloud("/data/notes");
await cloud(`/data/notes/${inserted.data.id}`, "PATCH", { title: "ویرایش شد" });
await cloud(`/data/notes/${inserted.data.id}`, "DELETE");
console.log(rows.data);inserted = cloud("/data/notes", "POST", {"title": "اولین یادداشت"})
rows = cloud("/data/notes")
cloud(f"/data/notes/{inserted['data']['id']}", "PATCH", {"title": "ویرایش شد"})
cloud(f"/data/notes/{inserted['data']['id']}", "DELETE")
print(rows["data"])PATCH کل شیء data را جایگزین میکند. مالک از نشست معتبر تعیین میشود؛ فرستادن owner_id داخل data مالکیت را عوض نمیکند. هر کاربر فقط ردیف خودش را ویرایش و حذف میکند. برای خروجی بیشتر، GET /data/notes?offset=100 را بخوانید؛ هر صفحه حداکثر ۱۰۰ ردیف و next_offset دارد. در حین نوشتن همزمان، صفحهبندی offset یک snapshot ثابت نیست.
مدیریت و خروجی
GET /v1/cloud/{id}/database فهرست مجموعههاست. POST با action:list و table و offset دادهها را برای مدیر میخواند. action:insert با data، action:update با id و data، و action:delete با id عملیات مدیریت هستند. ردیف مدیریتی مالک کاربر ندارد؛ فقط مدیر یا مجموعهٔ public_read آن را میبیند. برای نسخهٔ پشتیبان، همهٔ صفحات هر مجموعه را صادر کنید. دادهها، فایلها و نشستهای ابرهای دیگر قابل دسترسی نیستند.
قرارداد API 1.6.0 · تاریخچهٔ تغییرات