内容通过接口对外可读时,哪些数据必须挡住
内容管理系统对外开放读取接口时,公开内容与受限内容的边界要先划清,再谈接口怎么写。通行的做法是按对象类型划:已经对外发布的正文与栏目结构可供读取,账号与权限数据、未发布内容、凭据与内部字段必须挡住,写操作一律要求鉴权。
端点覆盖哪些对象
WordPress 的接口文档把这件事说得比较直白:REST 端点代表文章、页面、分类法以及其他内置数据类型;站点上公开的内容一般可通过接口被公开访问,而内部用户、自定义内容类型和元数据只在通过鉴权之后才可用。这个描述里有两个容易被漏掉的点:一是”公开”的判断跟着站点自身的可见性走,不是所有列表都能读;二是同类对象里混着不同可见性的数据,接口不能因为对象类型相同就一起放出去。
必须挡住的四类数据
| 数据类别 | 默认可见性 | 放开后的典型后果 | 收口方式 |
|---|---|---|---|
| 已发布的正文与栏目 | 可公开读取 | 属于预期范围 | 按状态过滤,只出正式内容 |
| 草稿与待发布内容 | 必须挡住 | 未定稿提前曝光,预览链接被爬走 | 读取时校验状态,预览只给授权会话 |
| 后台账号、用户组与权限数据 | 必须挡住 | 角色结构与可猜测的用户名外泄 | 只在鉴权后的管理接口出现 |
| 接口密钥、访问令牌与内部字段 | 必须挡住 | 凭据泄露导致越权写入 | 不进入任何对外响应,日志同样脱敏 |
接口文档该写参数还是写边界
对外文档只列参数名与示例响应是不够的,还需要写清哪些字段不返回、哪些状态不可读、哪些动作要鉴权。AnQiCMS 的接口能力集中在高频那几类:文档列表与详情、分类与标签、上传图片、留言与评论、友情链接、系统设置与联系方式。做 API 调用对接时,把这六类按”可读/可写”标出来,比逐个写参数更能防止误放开。
批量导入接口的位置与用途
写入侧最常见的批量场景是内容导入。AnQiCMS 提供文档内容导入接口 /api/import/archive,支持按标题查询文档是否已存在,用于批量导入。这个接口的边界要点有三条:调用需要有效凭据;导入目标站点的归属要显式指定;按标题查重的结果只能用于决定新建还是跳过,不能当成内容可读的旁路。
给智能体开放时,工具面要再收一层
当调用方是 AI 客户端而不是人时,可见范围要按能力目录收敛。AnQiCMS 内置 MCP Server,工具面基于意图目录统一收敛,写操作带回合级操作审批,可被 Claude、Cursor 这类外部 AI 客户端接入。这里的判断依据不是”能不能调用”,而是”调用前先让谁确认”:意图目录决定客户端能看到哪些动作,确认环节决定批量写入会不会一次跑偏。
常见问题
公开内容与草稿能不能用同一个端点返回? 可以共用端点,但响应必须按状态过滤;靠调用方自己传参数区分可见性,等于把边界交出去。
预览链接带一个参数就能看草稿,算泄露吗? 取决于参数是否长期有效、能否被爬取收录。可分享的预览应绑定有效期与授权会话,避免成为长期公开的地址。
接口文档写了字段表还不够,缺的是什么? 缺边界说明:哪些字段永不外发、哪些状态不可读、哪些动作需要鉴权与确认,这三件事要单独写清楚。