在这段生成的支付数据规范化函数处理 API 输入前,对它进行审查。
接收一个 JSON 对象,其中 id 是十进制字符串,amountCents 是非负安全整数,note 是可选字符串;返回只包含这三个字段的 JSON,保留数值 0,区分语法错误与无效数据,并且绝不把不可信键应用到对象原型。
JavaScript
function normalizePayment(body) {
try {
const input = JSON.parse(body);
const payment = Object.assign({}, input);
payment.id = BigInt(Number(payment.id));
payment.amountCents = payment.amountCents || 100;
payment.note = payment.note || '';
delete payment.password;
return JSON.stringify(payment, null, 2);
} catch {
return JSON.stringify({});
}
}
const body = JSON.stringify({
id: '9007199254740993',
amountCents: 0,
note: '',
token: 'internal-secret',
});
console.log(normalizePayment(body));
生成代码仅作示例,不代表任何特定模型