【问题标题】:Error in console of AXIOSAXIOS 控制台出错
【发布时间】:2018-11-22 23:37:54
【问题描述】:

我在 reactjs 应用程序中使用 axios。我的代码如下所示

axios.post('/api/addresses/upload/',formData,config)
  .then(function (response) {

  })
  .catch(error => {
  });

我没有在任何地方使用任何console.log() 语句,但我在console 中遇到错误。

console 中如何打印此错误?

【问题讨论】:

  • 422 无法处理的实体是服务器错误响应。这是一种常见的行为。
  • 浏览器可能会记录这些内容,而不管任何console 日志记录。查看浏览器的设置。
  • @Abhishek,console 是怎么来的?
  • @abuabu 它在浏览器的控制之下。
  • 主要浏览器默认将不成功的网络请求(4xx 或 5xx 状态码)记录到控制台。浏览器会这样做,它不需要脚本明确地这样做。

标签: javascript reactjs axios console.log


【解决方案1】:

尝试通过设置 axios 请求的标头,

超文本传输​​协议 (HTTP) 422 Unprocessable Entity 响应状态码表示服务器理解请求实体的内容类型,请求实体的语法正确,但无法处理包含的指令。

在处理数据库中记录的插入或更新等操作时,您可能会遗漏一些必填字段。也许你可以看看它。如果一切正常,请尝试对您的请求标头进行以下设置。

如果您提交带有文件的表单,则使用标题的内容类型作为

  1. 'multipart/form-data',
  2. 没有文件意味着然后将内容类型设置为'application/x-www-form-urlencoded',
  3. 如果您需要发布 json 方式,请将 content-type 设置为 'application/json' 和 "Accept: 'application/json'"

如果发生任何 cors 错误,则使用 'crossDomain': true

var formData = new FormData();
axios.post('/api/addresses/upload/', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
})

【讨论】:

  • 如果缺少必填字段,服务器应用程序应返回 400 Bad Request,因为缺少字段表示请求格式错误。 422 表示一个格式正确的请求,它在语义上没有意义。它很少使用,通常仅在 WebDAV 服务的上下文中使用。 OP还询问为什么将这个错误记录到控制台而不是如何解决它。所以这并不能回答问题。
  • 他在发布他的数据是对的,我在以下观点中说过。比方说,他试图发布如下{“name”:“XXX”,“age”:“5”}。该对象看起来是正确的,即插入记录需要姓名和年龄,但他可能已将他的字段“姓名”设置为字符串,将“年龄”设置为数据库中的数字。在那种情况下,上面的对象很好。但是作为字符串发布的年龄,目前它会抛出 422 Unprocessable Entity 响应状态代码,因为它需要一个数字而不是字符串。
  • 字段的错误类型也表示请求格式错误,因此 400. 422 仅适用于所有必填字段都存在且类型正确但在语义上没有任何意义的情况。它如何无法理解对于用例来说是非常具体的。就像您在没有日历的一年中的 2 月 29 日创建一个新的日历条目。
  • 422(Unprocessable Entity)状态码表示服务器理解请求实体的内容类型(因此415(Unsupported Media Type)状态码是不合适的),请求实体的语法是正确(因此 400(错误请求)状态代码不合适)但无法处理包含的指令。例如,如果 XML 请求正文包含格式正确(即语法正确)但语义错误的 XML 指令,则可能会出现此错误情况。 stackoverflow.com/questions/16133923/…
  • 仍然不是 OP 要求的。所以这不是问题的答案。
猜你喜欢
  • 2021-10-30
  • 2019-12-17
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
相关资源
最近更新 更多