【发布时间】:2015-08-12 14:10:38
【问题描述】:
我正在为 REST API 的“试运行”操作寻找一些最佳实践。
假设我有一个将资金从账户 A 转移到账户 B 的端点。我可以像这样发起转账:
POST /transactions
{
"amount": 1000, // how much to transfer
"source": "A", // account to transfer from
"destination": "B" // account to transfer to
}
此操作创建一个“交易”,因此响应将是一个交易对象,其有效负载包含:
{
"id": "txn-123",
"amount": 1000,
"source": "A",
"destination": "B",
"fees": 10, // any fees that were charged
"balance": 2500 // balance in source account AFTER transfer
}
我希望能够进行试运行有几个原因:
- 确定转账是否成功(例如,如果账户 A 余额不足,转账可能会失败)
- 事先确定适用的费用是多少
那么,“试运行”概念的最佳实践是什么?我能想到几个选项:
- 向现有传输端点传递一个标志,以指示试运行选项。该标志可以是查询字符串、有效负载的一部分、标头等。确切的实现有待商榷,但从概念上讲,我喜欢这个,因为它提供了一个干净的接口,让您了解有关从单个执行传输的所有信息端点。
- 专用端点专门用于执行转移试运行。这“感觉”更安全,因为您不会无意中执行破坏性操作,因为实时和空运行端点是完全分开的。另一方面,如果您可以访问生产系统,您真的应该知道自己在做什么,所以我不是一个超级粉丝。
- 没有预演概念。只需使用一组完全不同的端点来计算费用、获取余额或任何其他有助于您推断转账结果的操作。我不喜欢这样,因为您强制客户端复制传输端点中已包含的所有逻辑。
这些是我目前对此事的看法,但我很乐意听听其他人的想法。
【问题讨论】:
标签: rest