【报错】Request failed with status code 415/400/500/404/413

【在写登陆页面发送请求的时候遇到的一系列错误】

状态码【415】

报错原因

(Unsupported Media Type”)
HTTP请求头部文件 'Content-type’与服务器期望的不一致

解决方法

检查控制台— 网络—请求标头 中的 'Content-type’与自己写的 headers里面是否一致,不一致改成一致的
在这里插入图片描述
如果使用的是post或put 方法,

export const getLogin = (data) => {
  return http({
    url: '/admin/admin/login',
    method: 'post',
    data,
    // data: qs.stringify(data),
//检查以下代码
    headers: { 'Content-type': 'application/json' }
  })
// application / x - www - form - urlencoded  
}

状态码【400】

报错原因

1.语义有错误
2.请求参数有无错误
3.检查url请求路径

qs.stringify、JSON.stringify的区别

看情况选择qs.stringify或者JSON.stringify进行数据的序列化

import qs from 'qs'

var a = {name:'hehe',age:10};
qs.stringify序列化结果如下
name=hehe&age=10JSON.stringify序列化结果如下:
"{"a":"hehe","age":10}"

参考文章:https://blog.csdn.net/qappleh/article/details/89010466

状态码【500】

报错原因

前端利用post请求给后端发送数据,但是出现了错误,500代表 (服务器内部错误)
form里的 adminPassword等数据与后端写的参数名字不一致

 data() {
    return {
      form: {
        adminPassword: '123456',
        adminTel: '18820242024',
        verificationCode: ''
      }

解决方法

将参数名字修改一致

状态码【404】

请求的资源不存在,各个方面都检查一遍

状态码【413】

报错原因

请求体太大

解决方法

找到node_modules下的.bin下的vue-cli-service.cmd
用记事本打开
找到最后一行
加入代码"--max-http-header-size=1000000"注意两边要有空格

endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & 
"%_prog%" "--max-http-header-size=1000000" "%dp0%\..\@vue\cli-service\bin\vue-cli-service.js" %*

支持的请求方法

.GET(SELECT):从服务器取出资源(一项或多项)。
.POST(CREATE):在服务器新建一个资源。
.PUT(UPDATE):在服务器更新资气(客户端提供改变后的完整资源)。
.PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
.DELETE(DELETE):从服务器删除资源。
·HEAD:获取资源的元数据。
·OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

通用返回状态说明

200:请求成功
201:创建成功
204:删除成功
400:请求的地址不存在或者包含不支持的参数
401:未授权
403:被禁止访问
404:请求的资源不存在
422:[POST/PUT/PATCH]当创建一个对象时,发生一个验证错误
500:内部错误

### 解决 Vue 中 Axios 请求失败状态码为 400 的问题 当遇到 HTTP 状态码 400 错误时,通常意味着服务器无法处理客户端发送的请求,因为请求中有语法错误或缺少必要的参数。为了更好地管理和响应这种类型的错误,在 Vue 应用程序中可以采取以下措施: #### 1. 设置全局拦截器捕获错误 通过设置 Axios 的全局请求和响应拦截器来统一管理 API 调用中的异常情况。 ```javascript import axios from 'axios'; // 创建一个新的 Axios 实例 const instance = axios.create({ baseURL: process.env.VUE_APP_API_URL, }); // 添加响应拦截器 instance.interceptors.response.use( response => { // 对于成功的响应不做特殊处理 return response; }, error => { const { response } = error; if (response && response.status === 400) { console.error('Bad Request:', response.data); throw new Error(`Server responded with status ${response.status}: Bad Request`); } // 将其他类型的错误继续抛出以便上层捕捉 return Promise.reject(error); } ); export default instance; ``` 此代码片段定义了一个自定义的 Axios 实例,并为其配置了响应拦截器以检测并处理特定的状态码 400 响应[^1]。 #### 2. 使用 try-catch 结构调用服务方法 在实际发起网络请求的地方采用 `try...catch` 或者 `.then().catch()` 来包裹异步操作,从而能够优雅地处理可能出现的各种错误状况。 ```javascript async function fetchData() { try { const result = await axios.get('/api/data'); return result.data; } catch (error) { if (!error.response) { // 如果没有收到有效的响应,则可能是连接超时等问题 alert('Network error occurred.'); } else if (error.response.status === 400) { // 特定情况下显示更详细的提示信息给用户 alert('Invalid data was sent to server, please check your input and retry.'); } throw error; // 继续传播未被捕获的错误 } } ``` 这段 JavaScript 函数展示了如何利用 `try...catch` 构造去执行可能引发拒绝承诺的操作,并针对不同场景提供相应的反馈机制[^2]。 #### 3. 提供友好的用户体验界面 对于前端应用而言,重要的是要让用户知道发生了什么以及他们应该怎么做才能解决问题。可以通过模态框、通知条或其他形式向用户提供清晰而简洁的信息说明。 例如,可以在页面顶部添加一个消息栏用于展示来自后端API返回的消息内容;也可以设计专门的错误页用来引导访客回到正常浏览路径上去。 综上所述,面对 Vue 中 Axios 发生 400 状态码的情况,除了技术层面的有效应对之外,还应当注重提升整体应用程序的质量和服务水平,确保即使出现问题也能给予良好的交互体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值