数据库 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 | 否 | 用于冲突解决的列名 |