You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js中如何获取POST请求错误响应的JSON对象值

获取Next.js API错误响应的JSON消息

问题出在你抛出错误时只传递了状态码,没有读取后端返回的错误响应体。要拿到包含提示文本的JSON,需要在抛出错误前先解析错误响应的内容。

修改前端请求代码

try {
  const res = await fetch("/api/email-registration", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      emailValue: emailValue,
    }),
  });

  if (!res.ok) {
    // 先解析错误响应的JSON内容
    const errorResponse = await res.json();
    // 抛出包含错误消息的自定义错误
    throw new Error(errorResponse.message || `请求失败:${res.status}`);
  }

  const data = await res.json();
  setMessage(data.message);
} catch (err) {
  // 这里就能拿到后端返回的错误提示文本了
  setMessage(err.message);
  console.log(err);
}

原理说明

fetch API只有在网络层面失败时才会自动抛出错误,HTTP状态码非2xx(比如409)属于业务错误,不会触发自动抛出。这时候你仍然可以调用res.json()读取响应体,解析出后端返回的错误信息后再手动抛出,就能在catch块中获取到完整的错误提示。

如果需要同时保留状态码和错误消息,可以抛出自定义对象:

// 在if (!res.ok)块中
const errorResponse = await res.json();
throw {
  status: res.status,
  message: errorResponse.message
};

// 在catch块中
catch (err) {
  setMessage(err.message);
  console.log(`状态码:${err.status}`);
}

内容的提问来源于stack exchange,提问作者Pong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:15:32