你在这里。看看这个问题与其他知识怎样相连。
选择节点前往页面 · 展开后可留在地图中阅读
一个问题
为什么操作的含义必须稳定?
有了地址,还要让使用者知道对它进行的操作意味着什么。
列举用于发现子项,读取用于取得内容,写入用于修改支持修改的内容,执行用于调用动作。这些操作有不同的效果;熟悉的地址不应掩盖含义的意外变化。
例如,界面改版不应该悄悄把一次读取变成一次修改。Agent 和人一样,需要知道操作会产生什么效果。共同的操作为不同资源提供了统一起点。
但这不代表所有 Provider 的响应时间、一次修改能否全部成功或全部撤销、以及失败方式都相同。这些行为需要在各自的约定中说明并验证。
同一个任务,四种不同请求
以下地址只是教学示例,不是可以直接调用的运行端点。
| 目的 | 操作含义 | 预期效果 |
|---|---|---|
| 看有哪些任务 | 列举 /work/tasks | 获得目录中可访问的任务 |
| 看标题 | 读取 /work/tasks/keynote/title | 获得当前文字 |
| 改标题 | 向支持写入的标题资源写入新值 | 修改那份内容 |
| 把任务提交审阅 | 执行应用提供的提交动作 | 由动作实现检查规则并产生效果 |
把“提交审阅”设计成明确动作,有助于保留它的业务含义:它可能需要校验必填项或记录一次提交,不能仅凭按钮文字把它当成任意字段写入。界面可以换掉按钮的样式,执行入口仍应保留约定的效果。