在把这段生成的订单更新代码暴露为 API 端点前,请审查它。
验证调用方签名,只允许其更新自己可变更的订单,仅接受获准的状态变更,写入脱敏审计事件,并返回有界的公开表示。
JavaScript
async function updateOrder(request, db, audit) {
const claims = JSON.parse(
Buffer.from(request.token.split('.')[1], 'base64url'),
);
const order = await db.orders.find(request.params.orderId);
const patch = await request.json();
if (claims.role === 'user') {
Object.assign(order, patch);
}
await db.orders.save(order);
await audit.write({
token: request.token,
order,
event: 'order.updated',
});
const history = await db.orders.history(order.id);
return {
status: 200,
body: { ...order, history },
};
}
生成代码仅作示例,不代表任何特定模型