資料庫 API 為你的資料庫資料表提供 PostgREST 風格的 CRUD 操作。所有請求都需要身分驗證標頭。
查詢記錄
從資料表中擷取記錄,支援過濾、排序與分頁。
查詢參數
| 參數 | 類型 | 說明 |
|---|
limit | integer | 回傳的最大記錄數(1-1000,預設值:100) |
offset | integer | 分頁時要跳過的記錄數(預設值:0) |
order | string | 排序方式(例如 createdAt.desc、name.asc) |
select | string | 要回傳的欄位,以逗號分隔 |
{field} | string | PostgREST 過濾條件(例如 status=eq.active) |
過濾運算子
| 運算子 | 說明 | 範例 |
|---|
eq | 等於 | status=eq.active |
neq | 不等於 | status=neq.deleted |
gt | 大於 | age=gt.18 |
gte | 大於或等於 | price=gte.100 |
lt | 小於 | quantity=lt.10 |
lte | 小於或等於 | score=lte.50 |
like | 模式比對(區分大小寫) | name=like.*john* |
ilike | 模式比對(不區分大小寫) | email=ilike.*@gmail.com |
in | 在清單中 | status=in.(active,pending) |
is | 是否為 null/true/false | deleted_at=is.null |
回應標頭
| 標頭 | 說明 |
|---|
X-Total-Count | 符合查詢條件的總記錄數 |
Content-Range | 回傳的記錄範圍(例如 0-99/1234) |
建立記錄
在資料表中建立一筆或多筆記錄。
重要提示:請求主體必須是陣列,即使只建立單筆記錄也是如此。
| 標頭 | 值 | 說明 |
|---|
Prefer | return=representation | 加入此項以回傳已建立的記錄 |
不含 Prefer 標頭時:
含 Prefer: return=representation 時:
更新記錄
更新符合查詢過濾條件的記錄。
查詢參數
使用過濾運算子指定要更新的記錄。
| 標頭 | 值 | 說明 |
|---|
Prefer | return=representation | 加入此項以回傳已更新的記錄 |
刪除記錄
刪除符合查詢過濾條件的記錄。
查詢參數
使用過濾運算子指定要刪除的記錄。
| 標頭 | 值 | 說明 |
|---|
Prefer | return=representation | 加入此項以回傳已刪除的記錄 |
不含 Prefer 標頭時:204 No Content
含 Prefer: return=representation 時:
錯誤回應
找不到資料表 (404)
無效查詢 (400)
驗證錯誤 (400)
複雜過濾條件
Upsert(插入或更新)
插入一筆記錄,若與唯一約束發生衝突則更新該記錄。
| 標頭 | 值 | 說明 |
|---|
Prefer | resolution=merge-duplicates | 發生衝突時更新現有記錄 |
Prefer | resolution=ignore-duplicates | 記錄已存在時忽略插入 |
Upsert 需要資料表上存在唯一約束(例如主鍵或唯一索引)。衝突解決方式將依此約束而定。
呼叫 RPC 函式
透過 PostgREST RPC 執行資料庫函式。支援所有 HTTP 方法(GET、POST、PUT、PATCH、DELETE)。
管理員端點
以下端點需要管理員身分驗證。
管理員端點的標頭
列出資料庫函式
取得 public 結構描述下的所有資料庫函式。需要管理員身分驗證。
列出資料庫索引
取得所有資料庫索引。需要管理員身分驗證。
列出 RLS 政策
取得所有資料列層級安全性(Row Level Security)政策。需要管理員身分驗證。
列出資料庫觸發器
取得所有資料庫觸發器。需要管理員身分驗證。
列出資料庫遷移
取得已成功執行的自訂遷移歷史記錄。InsForge 會將這些記錄儲存在 system.custom_migrations 中,但此端點僅回傳遷移的中繼資料與已執行的陳述式。需要管理員身分驗證。
建立資料庫遷移
建立並立即對資料庫執行一次自訂遷移。只有當每一條陳述式都執行成功時,此遷移才會被記錄。需要管理員身分驗證。
請求主體
| 欄位 | 類型 | 是否必填 | 說明 |
|---|
version | string | 是 | 數字形式的遷移版本號(最多 64 位)。可以是 Drizzle 風格的循序前綴(例如 0001),也可以是 YYYYMMDDHHmmss 格式的時間戳記。版本號依數字大小比較。InsForge CLI 會為本機遷移檔名產生 14 位的 UTC 時間戳記。 |
name | string | 是 | 遷移名稱,僅能使用小寫字母、數字和連字號 |
sql | string | 是 | 要剖析並執行的 SQL 文字 |
請勿在自訂遷移中包含 BEGIN、COMMIT 或 ROLLBACK。InsForge 會在自己的交易中執行此遷移。
執行原始 SQL(嚴格模式)
以嚴格清理規則執行原始 SQL 查詢。禁止存取系統資料表和 auth.users。需要管理員身分驗證。
請求主體
| 欄位 | 類型 | 是否必填 | 說明 |
|---|
query | string | 是 | 要執行的 SQL 查詢 |
params | array | 否 | 用於參數化查詢的查詢參數 |
執行原始 SQL(寬鬆模式)
以寬鬆清理規則執行原始 SQL 查詢。允許對系統資料表執行 SELECT 與 INSERT。請謹慎使用。需要管理員身分驗證。
請求主體
| 欄位 | 類型 | 是否必填 | 說明 |
|---|
query | string | 是 | 要執行的 SQL 查詢 |
params | array | 否 | 用於參數化查詢的查詢參數 |
此端點的限制較為寬鬆,可以存取系統資料表。請僅在必要時使用,並確保具備適當的授權。
匯出資料庫
以 SQL 或 JSON 格式匯出資料庫結構描述和/或資料。需要管理員身分驗證。
請求主體
| 欄位 | 類型 | 是否必填 | 預設值 | 說明 |
|---|
tables | array | 否 | all | 要匯出的資料表清單 |
format | string | 否 | sql | 匯出格式(sql 或 json) |
includeData | boolean | 否 | true | 包含資料表資料 |
includeFunctions | boolean | 否 | false | 包含資料庫函式 |
includeSequences | boolean | 否 | false | 包含序列 |
includeViews | boolean | 否 | false | 包含檢視表 |
rowLimit | integer | 否 | - | 每個資料表的最大列數 |
匯入資料庫
從 SQL 檔案匯入資料庫。需要管理員身分驗證。
| 欄位 | 類型 | 是否必填 | 預設值 | 說明 |
|---|
file | file | 是 | - | 要匯入的 SQL 檔案 |
truncate | boolean | 否 | false | 匯入前清空既有資料表 |
批次插入或更新
從 CSV 或 JSON 檔案批次插入或更新資料。需要管理員身分驗證。
| 欄位 | 類型 | 是否必填 | 說明 |
|---|
file | file | 是 | 包含資料的 CSV 或 JSON 檔案 |
table | string | 是 | 目標資料表名稱 |
upsertKey | string | 否 | 用於衝突解決的欄位名稱 |