如何在HTTP请求配置的header对象中添加getter生成随机ID
问题
我有一个名为headers的对象,希望为其添加带随机值的请求头,示例如下:
configs = { header : { 'x-some-id': Math.random().toString() } }
该config参数用于发送HTTP请求的客户端,其中随机ID由负载均衡器生成,每次请求需不同。我们不想为每个请求创建新客户端,因此希望在header中使用getter函数,使每次发起请求时自动填充新的ID。理想实现如下:
configs = { header : { 'x-some-id': get() { return Math.random().toString()} } }
请问该如何实现这一需求?
解决方案
你可以利用JavaScript的对象 getter 语法实现需求,正确写法是在属性名前添加get关键字定义访问器属性,每次访问该属性时都会执行对应函数并返回新的随机值。
具体实现代码:
const configs = { header: { get 'x-some-id'() { return Math.random().toString(); } } };
每次访问configs.header['x-some-id']时,都会生成新的随机字符串。需要确保HTTP客户端在每次请求时会重新读取该属性值,才能触发getter生成新ID,避免客户端缓存初始值。
如果客户端默认缓存header属性值,还可以将header设为返回对象的getter函数,每次请求获取全新header对象:
const configs = { get header() { return { 'x-some-id': Math.random().toString() }; } };
这种方式下,每次访问configs.header都会得到包含新随机ID的header对象,确保每次请求的header值都是最新的。
内容的提问来源于stack exchange,提问作者Satyaki Das
相关产品推荐
相关产品推荐

