这些格式中的任何一种都可以工作,我见过使用数组和 base64 编码的 API。您也可以使用十六进制编码,base58 任何其他。
虽然您不关心大小,但我会注意到编码为 JSON 的数组将使用大约 2.7 倍于 base64 编码的数据量。将其乘以数千个请求,您就会有更多的数据通过网络传输。
任何现代客户端都应该能够解码任何这些格式。我认为 base64 编码不会比使用数组困难得多,但它会更节省资源。
你可以很容易地证明这一点:
function getRandomBuffer(length) {
return Buffer.from(Array.from( { length }, (v,k) => Math.floor(Math.random()*256)))
}
function getJSONLength(obj) {
return JSON.stringify(obj).length;
}
const buf = getRandomBuffer(200 * 1024);
const jsonLengths = {
Array: getJSONLength({ pdf: [...buf] }),
Hex: getJSONLength({ pdf: buf.toString("hex")}),
Base64: getJSONLength({ pdf: buf.toString("base64") })
}
console.table(jsonLengths);
200kb 的 JSON 数据大小(以字节为单位):
┌──────────┬────────┐
│(索引)│价值观│
├──────────┼────────┤
│ 阵列 │ 731143 │
│ 十六进制 │ 409610 │
│ Base64 │ 273078 │
└──────────┴────────┘