审查生成的转账端点

来自 HTTP API 设计
Node 24 高级 6分钟 找出 4处问题

在这段生成的转账端点处理真实账户前,对它进行审查。

在已授权账户间转移精确的正数金额,原子提交,只发布一次事件,并让调用方安全重试结果未知的请求。

JavaScript
async function createTransfer(request, db) {
  const body = await request.json();
  const amount = Number(body.amount);
  const requestId = crypto.randomUUID();
  const source = await db.accounts.find(body.sourceId);
  const target = await db.accounts.find(body.targetId);
  if (!source) return json(404, { error: "not found" });
  if (!target) return json(404, { error: "not found" });
  source.balance -= amount;
  target.balance += amount;
  await db.accounts.save(source);
  await db.accounts.save(target);
  await db.events.publish("transfer.created", { requestId, amount });
  return json(
    201,
    { id: requestId, sourceId: source.id, targetId: target.id, amount },
  );
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误