创建你的第一个 flag
接下来的几分钟里,你会创建一个 FortressFlag 账户,切换一个真实的 flag,并在你的应用将来会读取的那个 API 响应里看到这次变更落地。暂时不需要安装 SDK——只在最后用到一个终端。
前往控制台的注册页面,创建你的组织。你会起一个名字,设置邮箱和密码,并接受服务协议——一个复选框,覆盖紧挨着它链接出来的那一组文件。
整个表单就这么多。你的试用立即开始,包含 1,000 台月活设备,而且不会因为时间到期——按你自己的节奏评估。
2. 认识演示世界
Section titled “2. 认识演示世界”你登录进来时已经是这个组织的 Owner,并且已经有东西可看:一个 Example 项目,两个环境——dev 和 production——以及三个状态很真实的布尔 flag:
new-checkout——在所有环境都关闭,等待它的灰度发布dark-mode——在dev开启,在production关闭beta-banner——两边都开启
这是你的沙盒。本页剩下的所有操作都发生在 dev 环境里,你可以在那里随意改动任何东西。
3. 切换一个 flag
Section titled “3. 切换一个 flag”打开 Example 项目,找到 new-checkout,在 dev 里把它打开。这是一次真实的变更:对每一台读取这个环境的设备来说它已经生效,它进了你的审计日志,而且你马上就会从 API 里看到它。
(在 production 里试一下同样的操作,你会发现控制台对它的处理不一样——生产类别的环境会有更醒目的样式和更严格的规则。那是角色与安全在起作用。)
4. 签发一个 SDK 密钥
Section titled “4. 签发一个 SDK 密钥”要像应用那样读取 flag,你需要一个客户端密钥。在 Example 项目里打开 SDK 密钥,为 dev 环境签发一个。
完整的密钥——以 ffc_dev_ 开头——只在此刻显示一次。把它复制下来。离开这个界面之后,列表里只会显示足够辨认它的部分。(弄丢了?再签发一个,然后吊销第一个——密钥很便宜,吊销是即时生效的。)
5. 像设备一样读取它
Section titled “5. 像设备一样读取它”向客户端 API 请求这台设备的 flag——每个 SDK 发出的都是同一个请求。把你刚复制的密钥放进一个变量,然后:
export FF_SDK_KEY="(你刚签发的那个 ffc_dev_ 密钥)"
curl -s "https://edge.fortressflag.com/v1/client/flags?environment=dev" \ -H "Authorization: Bearer $FF_SDK_KEY" \ -H "X-FF-Device: dev_8KqW3nR2vT7yLp0aZxQmBg" \ | jq -r .payload | tr '_-' '/+' | base64 -d | jq(响应把数据包在一个编码过的 payload 里——最后三个管道阶段负责解开它。X-FF-Device 头携带一个设备标识;SDK 会自己签发,而对于终端里的实验,任何格式正确的值都可以。)
你拿回来的正是 dev 里的设备会拿到的东西:
{ "v": 1, "tenant": "…你的组织 id…", "environment": "dev", "device": "dev_8KqW3nR2vT7yLp0aZxQmBg", "issuedAt": "2026-08-23T15:00:00Z", "expiresAt": "2026-08-23T15:30:00Z", "flags": { "new-checkout": true, "dark-mode": true, "beta-banner": true }}看到 new-checkout: true 了——那是你的切换,已经被提供出去。在控制台里把它关回去,再跑一次 curl,看它跟着变。就是这样——你已经完成了第一次 flag 变更,并从数据平面读到了它。