在untils文件夹中创建request.js文件,引入axios和axios-retry模块

import axios from "axios";
import axiosRetry from 'axios-retry';

3.创建axios实例

const service = axios.create({
  baseURL: "/api/v1.0",//配置接口地址
  timeout: 20*1000,//请求超时时间,单位毫秒(这里配置的20秒)

4.配置axios-retry

axiosRetry(service, {//传入axios实例
  retries: 3,              // 设置自动发送请求次数
  retryDelay: (retryCount) => {
    return retryCount * 1500;      // 重复请求延迟(毫秒)
  shouldResetTimeout: true,       //  重置超时时间
  retryCondition: (error) => {
    //true为打开自动发送请求,false为关闭自动发送请求
    if (error.message.includes('timeout') || error.message.includes("status code")) {
      return true;
    } else {
      return false;

5.配置axios请求方式

这里用到了qs,需要引入,qs是内部模块,不需要安装

import qs from "qs";
const http = {
  get(url, params) {
    const config = {
      method: 'get',
      url: url
    if (params) config.params = params;
    return service(config);
  post(url, params) {
    const config = {
      method: 'post',
      url: url
    if (params) config.data = qs.stringify(params)
    return service(config)

导出,方便请求接口的时候使用

export default http;

6.其他配置

request.js中还可以配置请求拦截器以及响应拦截器

7.引入使用

现在request.js已经配置好了,只需要引入文件就可以使用

我们在src下再创建一个文件夹,api,用来存放请求接口函数,里面可以按照接口类型分成多个文件

现在我们封装一个登录的请求接口,首先引入之前配置好的request.js

import  http  from "@/untils/request"
export function login(params) {
    return http.get(`/login`,params); 

我们再在登录页面login.vue中引入使用

import * as API_User from "@/api/user";  //也可以按需引入import {login} from "@/api/user";
export default {
  data() {
    return {
      username: "",
      password: "",
      verificationcode:"",
  methods: {
    submit(){
        const {username,  password,verificationcode}=this;//要用到的变量解构出来
        API_User.login({ username,  password,verificationcode }).then((res) => {
             console.log(res);//返回的数据

现在我们请求接口只需要调用api中的一个函数就可以实现了,同时如果请求失败也会进行多久重新请求,大功告成

分类:
前端
  •