AXIOS控制台中的错误

6
我在ReactJS应用程序中使用axios。我的代码如下:
axios.post('/api/addresses/upload/',formData,config)
  .then(function (response) {

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

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

enter image description here

为什么会在console中输出这个错误?


422不可处理实体是服务器错误响应。这是一种常见的行为。 - Abhishek
2
浏览器可能会记录这些内容,而不管是否有“控制台”日志记录。请查看您的浏览器设置。 - str
@Abhishek,它是如何出现在“控制台”上的? - abu abu
1
@abuabu 这是由浏览器控制的。 - Abhishek
4
主流浏览器默认会在控制台记录未成功的网络请求(4xx或5xx状态代码)。这是浏览器自动处理的,脚本无需显式指定。 - trixn
感谢Abhishek和@trixn的回复。这就是答案。谢谢。 - abu abu
1个回答

1
尝试通过设置axios请求的标头来解决问题。
超文本传输协议(HTTP)422无法处理实体响应状态代码表示服务器理解请求实体的内容类型和语法正确,但无法处理包含的指令。
可能您会缺少一些必需的字段,这些字段在处理记录的插入或更新等操作时是必需的。您可以查看一下。如果一切正常,则尝试将以下设置应用于您的请求标头。
如果您提交带有文件的表单,则使用标头的内容类型为
- 'multipart/form-data', - 没有文件则将内容类型设置为'application/x-www-form-urlencoded', - 如果需要发布JSON,则将内容类型设置为'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问为什么将此错误记录到控制台而不是如何解决它。因此,这并没有回答问题。 - trixn
他正在正确地发布他的数据,我已经从以下角度说过了。假设,他试图发布像下面这样的东西 {"name": "XXX", "age": "5"}。对象看起来没问题,它需要姓名和年龄来插入记录,但是他可能已经在数据库中将他的字段"name"设置为字符串,将"age"设置为数字。在这种情况下,上述对象是可以的。但是由于年龄以字符串形式发布,所以它会抛出422不可处理实体响应状态码,因为它需要一个数字而不是字符串。 - Jeeva
字段类型错误也表示请求格式不正确,因此返回400状态码。如果所有必需字段都存在且类型正确,但语义上没有任何意义,则应返回422状态码。它不能有意义是非常特定于用例的。例如,在没有2月29日的年份中创建新的日历条目。 - trixn
1
422(无法处理的实体)状态码表示服务器理解请求实体的内容类型(因此,415(不支持的媒体类型)状态码不适用),并且请求实体的语法正确(因此400(错误的请求)状态码不适用),但无法处理包含的指令。例如,如果XML请求正文包含格式良好(即语法上正确),但语义上错误的XML指令,则可能出现此错误条件。https://stackoverflow.com/questions/16133923/400-vs-422-response-to-post-of-data - Jeeva
仍然不是 OP 所问的。因此,这不是问题的答案。 - trixn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接