首页 > 解决方案 > 你如何在 JS catch 中从 Go 服务器进行 fetch 调用?

问题描述

我有一个 JS 前端和一个 Go 后端。在服务器上,当我响应错误时,我使用

http.Error(w, `{"err":"bad request"}`, http.StatusBadRequest)

在我的前端,我有

fetch(`${API_URL}/dosomething`)
  .then(res => res.json())
  .then(data => console.log('data', data))
  .catch(err => console.log('err', err));

错误发送过来就好了,但是 JS 中的 fetch 调用没有捕获。该err对象只是被传递给.then(data => console.log('data', data)). 我应该在我的服务器上做什么来使 fetch 调用捕获一个err值的字符串(所以我不必用 json 响应)。

标签: go

解决方案


遇到网络错误fetch()或 CORS 在服务器端配置错误时,promise 将拒绝,尽管这通常意味着权限问题或类似问题——例如,404 并不构成网络错误。对成功的准确检查将包括检查承诺是否已解决,然后检查该属性的值是否为真。TypeError fetch()Response.ok

每个 MDN


推荐阅读