当前位置: 首页 > 知识库问答 >
问题:

如何取回与错误响应关联的数据?

杜彦君
2023-03-14

我正在从前端向后端中的路由发出请求,该路由正在验证与用户关联的令牌,如果令牌已过期,则会将错误响应发送回前端。我正在发送一些json,但是在执行控制台时.log捕获块中的错误消息,未显示沿错误响应发送的json。

像这样发送错误响应

res.status(401).json({
                message: 'User session has expired'
            })

但是我在前端的 catch 块中得到的响应没有收到错误时发送的 json 的迹象。

岗位http://localhost:3001/check-验证401(未经授权)错误:请求失败,在XMLHttpRequest的settle(settle.js:19)处的createError(createError.js:17)处的状态代码401。手荷载(xhr.js:78)

不明白为什么随错误响应一起发送的json没有显示,如何获取?

共有1个答案

张鸿志
2023-03-14

在对错误执行console.log操作时,只显示错误的堆栈跟踪,而不显示与之相关的数据。可以获得与它一起发送的数据,这取决于请求是如何发出的或者是由哪个库发出的。如果请求由< code>axios发出,则可以执行以下操作:

axios.post('/formulas/create', {
    name: "",
    parts: ""
})
.then(response => { 
    console.log(response)
})
.catch(error => {
    console.log(error.response.data.message)
});

这里,在axios中,错误的详细信息将封装在<code>error.response<code>中。然而,如果请求是由fetchAPI发出的,则以下内容可以解决问题:

fetch('/401').then(function(response) {
  if (response.status === 401) {
    return response.json()
  }
}).then(function(object) {
  console.log(object.message)
})

P.S 我正在搜索很多关于这个问题的问题,但没有得到关于SO的答案,也没有得到任何关于它的文章或文档,即使是关于错误处理的官方Express文档也没有帮助。最后,我明白了问题出在用于发出请求的库上。这就是为什么回答我自己的问题来标记这个问题在SO上的存在。可以在此处找到与axios相关的详细讨论,以及在此处找到与获取api相关的详细讨论

 类似资料:
  • 问题内容: 当我从带有403响应的URL获取数据时 它抛出IOException,我无法获取响应数据。 但是当我使用firefox并直接访问该URL时,ResponseCode仍然是403,但是我可以获取html内容 问题答案: 根据javadocs,该方法将返回,可用于从错误条件(例如404)中检索数据。

  • 我的客户机中有一个异步方法,它向服务器发送udp请求并返回promise。我需要以某种方式将此promise传递给我的一个入站处理程序,以便它能够将其标记为“完成”,然后通过promise返回响应。设置成功(结果)。 你到底是怎么做到的?一旦入站处理程序收到响应,如何将请求实例与处理程序的响应相关联? 本网站建议的一些方法也不适合我: > 是否有办法从channel返回自定义promise。用Ne

  • 问题内容: 我正在向我的jQuery发送错误响应。但是,我无法获得响应文本(在下面的示例中,这将成为 “去海滩” ) jQuery唯一说的是“错误”。 有关详细信息,请参见以下示例: 的PHP jQuery的 现在我的结果是: 日志: 警报: 无法执行,因为:错误 有任何想法吗? 问题答案: 尝试:

  • 下面是我正在使用的一段代码: 期望reponse conatins的状态行:“HTTP/1.1400坏请求”想知道这是可以实现的吗?如果是,那么我如何继续做同样的事情。

  • 问题内容: jQuery的AJAX错误函数具有以下参数: 跨浏览器获取响应主体的最佳方法是什么? 这行得通吗(可靠地在所有浏览器中)? 问题答案: 有一个隐藏的函数可以从XHR等距提取数据: 如果您将其作为第二个参数传递,它将把响应视为JSON字符串。 请注意,由于没有响应(例如网络问题),您可能会收到错误消息。确保您也涵盖了这种情况。另外,我相信(不确定)如果服务器返回或状态,则jQuery会调

  • 使用Version4.0.3,我现在有一个IN和OUT序列参与一个JMS到HTTP代理,该代理由一个错误处理程序定义,如果出现异常,该处理程序将成功回滚JMS本地事务,但是在响应中返回SOAPFault(只有来自ClientHandler的警告消息)的情况下不会引发错误,因此我丢失了原始JMS消息(它已提交)。我应该注意,如果我在OUT序列中解析响应并在那里发现错误,那么在那里执行回滚没有任何效果