在Next.js中实现每次请求API端点时执行函数生成随机值
问题原因及解决办法
你的问题出在Math.random()的用法上——Math.random()不接受参数,你写的Math.floor(Math.random(10))实际上等价于Math.floor(Math.random())。而Math.random()返回的是0到1之间(不包含1)的浮点数,取整后永远是0,这就是每次返回同一个数字的核心原因。
正确代码示例
export default function handler(req, res) { // 生成 0-9 的随机整数 let number = Math.floor(Math.random() * 10); // 如果需要生成 1-10 的随机整数,替换成下面这行: // let number = Math.floor(Math.random() * 10) + 1; res.status(200).json({ name: number }); }
额外注意事项
如果后续在生产环境遇到API响应被缓存导致结果不变的情况,可以在API路由里显式禁用缓存:
export default function handler(req, res) { // 禁用浏览器及服务器端缓存 res.setHeader('Cache-Control', 'no-store'); let number = Math.floor(Math.random() * 10); res.status(200).json({ name: number }); }
内容的提问来源于stack exchange,提问作者Soma Juice
相关产品推荐
相关产品推荐

