axios判断服务器是否响应,axios响应拦截提示

本文介绍了如何在客户端使用axios设置请求拦截器,特别是在响应时如何根据不同的HTTP状态码显示相应的错误提示。通过创建axios实例并配置响应拦截器,对404、400、403、504、505和500等错误进行了处理,以提供友好的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

众所周知,axios是一个基于 promise 的异步请求数据的 HTTP 库;

而在客户端在请求数据时候,我们可以去设置请求拦截器,可以设置token令牌去进行后续请求数据的校验

而在响应数据的时候,http响应包会给我们返回响应的状态码,我们去根据不同的响应的状态码给出一些警告提示信息

二、代码实现

1.需要引入Axios 库和 element-ui库

import Axios from 'axios';

import { MessageBox, Message } from 'element-ui'

2.创建AxiosServe示例

export const baseURL = "http://192.168.0.101:8088";

//创建一个axios实例

const AxiosServe = Axios.create({

baseURL, // 请求服务器地址

timeout: 2000 // 设置时间超时,单位毫秒

})

3.设置响应拦截器

// 响应拦截器

AxiosServe.interceptors.response.use((response) => {

// 响应做些什么

console.log('response,' response);

// 返回请求成功的数据是response对象的data值

return response.data;

}, (err) => {

// 状态码

switch (err.response.status) {

case 404:

case 400:

Message({ type: 'error', message: '客户端请求有语法错误,不能被服务器所理解' });

break;

case 403:

Message.error({message:'权限不足,请联系管理员!'});

case 504:

case 505:

case 500:

Message({ type: 'error', message: '服务器发生不可预期的错误'});

break;

default:

Message.error({ message: '未知错误!'});

}

})

4.完整代码

import Axios from 'axios';

import { MessageBox, Message } from 'element-ui'

// export const baseURL = "http://it.warmtel.com"; //正式环境

export const baseURL = "http://192.168.0.101:8088"; // 开发环境

//创建一个axios实例

const AxiosServe = Axios.create({

baseURL,

timeout: 2000

})

// 响应拦截器

AxiosServe.interceptors.response.use((response) => {

// 响应做些什么

return response.data;

}, (err) => {

// 状态码

switch (err.response.status) {

case 404:

case 400:

Message({ type: 'error', message: '客户端请求有语法错误,不能被服务器所理解' });

break;

case 403:

Message.error({message:'权限不足,请联系管理员!'});

case 504:

case 505:

case 500:

Message({ type: 'error', message: '服务器发生不可预期的错误'});

break;

default:

Message.error({ message: '未知错误!'});

}

})

### 如何在 Axios 中实现请求和响应拦截 #### 创建 Axios 实例并配置基础 URL 和其他选项 为了更好地管理和定制 HTTP 请求,通常会创建一个 Axios 的实例,并为其指定一些全局配置项。 ```javascript // 引入 axios 库 import axios from 'axios'; const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // 设置默认的基础URL timeout: 5000 // 超时时间设置为5秒 }); ``` #### 添加请求拦截器 通过 `service.interceptors.request.use()` 方法可以注册一个函数,在每次发起请求之前执行该函数。这允许修改即将发送出去的请求参数或添加必要的头部信息等操作。 ```javascript service.interceptors.request.use( config => { // 可在此处加入身份验证token或其他公共头文件 if (store.getters.token) { config.headers['Authorization'] = 'Bearer ' + store.getters.token; } return config; // 返回配置对象继续下一步流程 }, error => Promise.reject(error) ); ``` #### 添加响应拦截器 同样地,`service.interceptors.response.use()` 用于监听所有的HTTP响应数据。可以在接收到服务器返回的数据之后做一些预处理工作,比如统一处理错误码、显示加载动画结束等等。 ```javascript service.interceptors.response.use( response => response.data, // 如果状态码是2xx,则直接返回response中的data部分 error => { console.log('err' + error); // 对于网络错误打印日志 let message = ''; switch (error.response.status) { case 401: message = "未授权"; break; case 403: message = "拒绝访问"; break; case 404: message = "请求地址出错"; break; default: message = "连接到服务器失败"; } Message.error(message); return Promise.reject(error); }); ``` 以上代码片段展示了如何利用 Axios 提供的功能来增强应用程序发出的每一个 AJAX 请求的安全性和用户体验[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值