简单配置axios 总结(可直接复制使用)

1.首先创建一个vue项目 request

npm create request

2.将项目多余内容清空,引入axios

npm install axios --save

引入之后,在main.js里面测试一下axios是不是好用的

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app');

import axios from 'axios';
axios({
  url:'http://172.16.46.94:8080/zjyzgl/TzBatchRecordController/TzBatchRecordAll',
}).then(res=>{
  console.log(res);
})

是有返回的,说明axios引用成功。

3.开始封装一个请求体

在src下面创建一个文件夹 就叫request吧

第一步引入axios并创建一个实例

import axios from "axios";
// 1.创建一个实例
const Axios = axios.create({
    baseURL: 'www.baidu.com', //基础地址
    timeout: 3000, //请求超时时间
})

第二步 配置请求拦截器 axios.interceptors.request

Axios.interceptors.request.use(config => {
    const token = localStorage.getItem('ACCESS_TOKEN'); //token是放在localStorage中
    if (token) {
        config.headers['Authorization'] = 'Bearer ' + token; // 让每个请求携带自定义 token 请根据实际情况自行修改
    }
    if (config.method == 'get') {
        config.params = {
            _t: Date.parse(new Date()) / 1000, //让每个请求都携带一个不同的时间参数,防止浏览器缓存不发送请求
            ...config.params
        }
    }
    return config;
}, (error) => {
    return Promise.reject(error);
})

第三步 响应拦截器  axios.interceptors.response  因为在请求响应可能会报错 我们要对他的报错信息进行处理 我们可以先做部分处理  具体的要根据规则来定 

//  响应拦截器中的error处理方法
const err = (error) => {
    if (error.response) {
        switch (error.response.status) {
            case 401:
                console.log({
                    message: '系统提示',
                    description: '未授权,请重新登录',
                    duration: 4
                })
                break;
            case 403:
                console.log({
                    message: '系统提示',
                    description: '拒绝访问'
                  })
                break;
                // ... 视情况增加
        }
    }
    return Promise.reject(error)
}

 响应拦截器具体方法

//3.响应拦截器
Axios.interceptors.response.use(response => {
    const token = response.headers['Authorization'];
    if (token) {
        localStorage.setItem('ACCESS_TOKEN', token) //这是存在localStorage里面 也可以存在vuex里面 在做退出时记得清除local记录
    }
    return response.data;//去掉返回的请求配置对象什么的 直接返回结果
}, err)

第四步.将Axios导出后就可以直接使用了

export default Axios;

第五步.使用  新建一个api文件夹 里面创建一个port,js文件

import Axios from "@/request/ruquest.js"

//写法类似即可
export const  getMessage=()=>{
    return Axios({
        url:'/comments'
    })
}

在需要使用到这个接口的页面引入即可直接使用

 

下面是完整的配置项  其实axios这个可以配很多东西的 我这只是简单的配置了一下

import axios from "axios";
const baseURL = process.env.NODE_ENV === 'development' ? 'http://localhost:3000':'http://localhost:3000'
// 1.创建一个实例
const Axios = axios.create({
    baseURL, //基础地址
    timeout: 3000, //请求超时时间
})
//2.配置拦截器
Axios.interceptors.request.use(config => {
    const token = localStorage.getItem('ACCESS_TOKEN'); //token是放在localStorage中
    if (token) {
        config.headers['Authorization'] = 'Bearer ' + token; // 让每个请求携带自定义 token 请根据实际情况自行修改
    }
    if (config.method == 'get') {
        config.params = {
            _t: Date.parse(new Date()) / 1000, //让每个请求都携带一个不同的时间参数,防止浏览器缓存不发送请求
            ...config.params
        }
    }
    return config;
}, (error) => {
    return Promise.reject(error);
})

//  响应拦截器中的error处理方法
const err = (error) => {
    if (error.response) {
        switch (error.response.status) {
            case 401:
                console.log({
                    message: '系统提示',
                    description: '未授权,请重新登录',
                    duration: 4
                })
                break;
            case 403:
                console.log({
                    message: '系统提示',
                    description: '拒绝访问'
                  })
                break;
                // ... 视情况增加
        }
    }
    return Promise.reject(error)
}

//3.响应拦截器
Axios.interceptors.response.use(response => {
    const token = response.headers['Authorization'];
    if (token) {
        localStorage.setItem('ACCESS_TOKEN', token) //这是存在localStorage里面 也可以存在vuex里面 在做退出时记得清除local记录
    }
    return response.data; //去掉返回的请求配置对象什么的 直接返回结果
}, err)

export default Axios;

想起来了 有时候业务需求需要取消请求  再配置一下取消请求(axios.CancelToken 这个CancelToken 的c是大写的)

import Axios from "@/request/ruquest.js"
import axios from "axios";
let cancelRequest = null;
export const getMessage = () => { 
    if (cancelRequest !== null) {
        cancelRequest()
    }
    return Axios({
        url: '/comments',
        method: 'post',
        cancelToken: new axios.CancelToken(function executor(c) {
            cancelRequest = c
        })
    })
}

取消请求效果如下:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 axios 进行代理请求的时候,需要先进行相关的配置,以下是一个简单配置示例: ```js // 引入 axios 库 import axios from 'axios' // 创建一个 axios 实例 const instance = axios.create({ // 设置代理地址 baseURL: 'http://localhost:3000', // 跨域请求时是否需要使用凭证 withCredentials: true, // 请求头信息 headers: { 'Content-Type': 'application/json' }, // 超时时间 timeout: 10000 }) // 将实例导出,方便其他模块使用 export default instance ``` 在这个配置中,我们通过设置 `baseURL` 来指定代理地址,这里使用的是 `http://localhost:3000`。同时,我们还可以设置其他的请求参数,例如跨域请求时是否需要使用凭证、请求头信息、超时时间等等。 接下来,我们可以在其他模块中使用这个实例进行代理请求。例如: ```js // 引入 axios 实例 import axios from './axios' // 发起代理请求 axios.get('/api/user') .then(response => { console.log(response) }) .catch(error => { console.log(error) }) ``` 在这个例子中,我们使用 `axios.get('/api/user')` 发起了一个代理请求,其中 `/api/user` 是我们需要请求的接口地址。由于我们在配置中设置了代理地址为 `http://localhost:3000`,因此请求最终会被转发到这个地址。 需要注意的是,如果代理请求涉及到跨域问题,需要在后端进行相应的跨域设置。另外,如果后端接口需要使用凭证(例如 cookie),则需要在配置中设置 `withCredentials: true`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值