使用 axios 捕获来自 404 响应的错误消息或在 javascript 中获取

luc*_*ste 4 html javascript cors axios vuejs2

我正在尝试使用 axios 支持来自 api ( https://rickandmortyapi.com )的 404 响应。

因此,当项目存在时,响应如下所示:

{
  "data": {
    "id": 11,
    "name": "Albert Einstein",
    // ...
  },
  "status": 200,
  "statusText": "OK",
  "headers": {
    "content-type": "application/json; charset=utf-8"
  },
  "config": {
    "transformRequest": {},
    "transformResponse": {},
    // ...
  },
  "request": {}
}
Run Code Online (Sandbox Code Playgroud)

如果未找到,响应为 404,数据如下:

{
"error": "Character not found"
}
Run Code Online (Sandbox Code Playgroud)

所以我想读取这个错误消息并将其放入变量中但没有效果。我有类似的东西用于测试:

{
  "data": {
    "id": 11,
    "name": "Albert Einstein",
    // ...
  },
  "status": 200,
  "statusText": "OK",
  "headers": {
    "content-type": "application/json; charset=utf-8"
  },
  "config": {
    "transformRequest": {},
    "transformResponse": {},
    // ...
  },
  "request": {}
}
Run Code Online (Sandbox Code Playgroud)
{
"error": "Character not found"
}
Run Code Online (Sandbox Code Playgroud)

正如我们所看到的,当服务器响应 404 时没有响应。从 404 响应中读取此消息有什么提示吗?

我也尝试过使用 fetch 但我认为问题是相同的。当服务器返回 404 时,我只得到错误,仅此而已。用 404 返回这些消息是一个好习惯吗?我还看到在 404 上控制台中有一条 CORS 消息(也许这是一个关键)

感谢帮助。:)

yur*_*636 6

编辑:2023 年 2 月 6 日

此问题已于 2019 年 3 月 19 日修复https://github.com/afuh/rick-and-morty-api/issues/42

如果您正在尝试问题,则不再出现以下原因


这是《瑞克和莫蒂》API 的限制。当请求返回 404 时,它不会发送 CORS 标头。并且当存在 CORS 问题时,您无法读取响应。

您可以在 DevTools 中自行检查

在此输入图像描述

在此输入图像描述


如果需要,您可以在他们的GitHub 存储库中提交问题。