NextResponse未向前端返回BMI数据?求助解决方法
如何在前端获取BMI API返回的计算数据?
你的问题核心是没有解析fetch返回的响应体——fetch调用返回的resp是一个Response对象,它只包含响应状态、头信息等元数据,要获取API返回的BMI数据,必须调用异步方法解析响应体内容。
前端代码修改方案
在拿到resp后,需要调用.json()方法(这是异步操作,需要加await)来解析JSON格式的响应体,之后就能访问bmi字段了。修改后的前端代码如下:
try { const resp = await fetch(`/api/bmi?${queryParams}`, { method: "GET", headers: { "Content-Type": "application/json", }, }); // 先检查响应是否成功 if (!resp.ok) { throw new Error(`请求失败,状态码: ${resp.status}`); } // 解析JSON响应体(异步操作,必须加await) const data = await resp.json(); console.log("BMI数据:", data.bmi); // 这里就能拿到计算后的BMI值了 } catch (error) { console.error("API调用失败:", error); }
额外优化建议(可选)
你的API代码里有个小细节可以简化:req.nextUrl.searchParams是同步属性,不需要加await,可以直接使用:
// 原API代码里的这部分可以去掉await const searchParams = req.nextUrl.searchParams; const inc = searchParams.get('inc'); const queryft = searchParams.get('ft'); const queryhtInInc = searchParams.get('htInInc'); const querywt = searchParams.get('wt'); const queryhtInCm = searchParams.get('htInCm');
这样不会影响功能,但代码更简洁规范。
内容的提问来源于stack exchange,提问作者Harsh Singh
相关产品推荐
相关产品推荐

