功能简介
Project 是应用资源、认证策略、平台配置、服务开关、API Key、Webhook 与数据权限的主要隔离边界。Project 归属于 Organization,但终端应用请求仍通过 Project ID 选择数据面上下文。
当前支持范围
- 项目(SUPPORTED):以 Project 隔离应用资源、服务开关、平台配置、API Key、Webhook 与认证策略。
适用场景
- 为不同应用、环境或团队划分资源。
- 独立配置 Auth、Platforms、Keys、Webhooks 与服务状态。
- 避免测试数据和生产凭据跨 Project 混用。
前置条件
- 拥有目标 Organization 中创建或读取 Project 的权限。
- 选择稳定且唯一的 Project ID。
- 为浏览器接入登记正确 Platform/Origin。
Console 操作路径
Console → 选择 Organization → Project;Project Settings 管理名称、Platforms、服务开关和迁移入口,Project Overview 进入 Auth、Databases、Storage、Functions 等服务。
SDK 示例
SDK · TypeScript
import { Client, Projects } from 'appbase-console-sdk';
const client = new Client().setEndpoint('https://<APPBASE_HOST>/v1');
const projects = new Projects(client);
const project = await projects.get({ projectId: '<PROJECT_ID>' });REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/projects/<PROJECT_ID>' \
-H 'Cookie: <CONSOLE_SESSION_COOKIE>'常见错误
| 现象 | 处理建议 |
|---|---|
401 | 缺少有效控制面 Session,或数据面请求没有允许的身份。 |
403 | 已识别 Project,但角色或 Scope 不允许目标操作。 |
404 | Project 不存在或当前身份不可见。 |
当前限制
- Organization 角色与资源 Permission 分层生效,不能只看其中一个。
- 服务开关关闭时,相应 API 可能被拒绝。
- Project ID 不应作为秘密;真正的秘密是 Session、JWT 与 API Key。
Appwrite 兼容说明
Project、Platform、Key 和服务 API 保留兼容概念;AppBase 额外要求理解 Organization 归属。
AppBase 增强说明
AppBase 将 Project 纳入 Organization 治理,并让 AI 与 Schema Version 等能力继续复用同一隔离边界。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:app/controllers/api/projects.phpbackend-candidate:src/Appwrite/Platform/Modules/Projects/Http/Projects/backend-candidate:tests/e2e/Services/Projects/ProjectsConsoleClientTest.phpfrontend-candidate:console/src/routes/(console)/project-[region]-[project]/
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs。上游页面不是 AppBase 实现证据。