vue中axios统一封装异常

axios的封装

首先还没安装axios,先使用 npm install axios 安装 一般我会在项目的src目录中,新建一个request文件夹,然后在里面新建一个http.js和一个api.js文件。http.js文件用来封装我们的axios,api.js用来统一管理我们的接口。

import axios from "axios";引入axios

js 复制代码
    // 配置axios对象
const requests = axios.create({
    //   基础路径
    baseURL: "http: //localhost:3000",  //后端的请求路径
    timeout: 3000, //   请求超出的时间
});

接着就是配置请求拦截器

js 复制代码
//请求拦截器:再发请求之前,请求拦截器可以检测的到,可以在请求发送出去之前做一些事情
requests.interceptors.request.use(
    (config) => {
    、、、、可以处理一些业务逻辑
        return config;
    },
    (err) => {
        return Promise.reject(new Error("file"));
    }
);

响应拦截器

js 复制代码
// 响应拦截器
requests.interceptors.response.use(
    (res) => {
        nprogress.done();
        return res.data; // 响应成功返回的数据
    },
    (err) => {
        return Promise.reject(err);
    }
);

export default requests;   // 暴露出去

统一封装get post请求

import requests from "../utils/request"; 将刚刚封装好的axios引入进来

js 复制代码
export function httpGet({ url, meth, params = {} }) {
  return new Promise((resolve, reject) => {
    requests({
      url,
      meth,
      params,
    })
      .then((reslut) => {
        resolve(reslut);
      })
      .catch((err) => {
        reject(err);  // 请求出错的异常就会在这里抛出 就不需要在vue文件中单独对每个请求抛出异常
      });
  });
}
js 复制代码
 //  post请求也是差不多意思 就是请求所携带的参数不一样
export function httpPost({ url, method, data = {} }) {
  return new Promise((resolve, reject) => {
    requests({ url, method, data })
      .then((reslut) => {
        resolve(reslut);
      })
      .catch((err) => {
        reject(err);
      });
  });
}

api请求

import { httpGet, httpPost } from "./http"; 这里直接引入刚刚封装好的

js 复制代码
// 用户登录 post请求
export const reqUserLogin = (data) =>
  httpPost({ url: "/admin/login", method: "post", data });
  
  // 获取 目标列表 get请求 不带参数
export const reqGetTargetList = () =>
  httpPost({ url: "/admin/Target/getTargetList", method: "get" });
  
  // 添加 目标内容 get请求带query参数
export const reqAddTarget = (params) =>
httpGet({ url: "/admin/Target/addTarget", method: "get", params });

// 根据id 删除某一条目标 get请求 携带params参数
export const reqDeleteTarget = (id) =>
  httpPost({ url: `/admin/Target/deleteTarget/${id}`, method: "delete" });
相关推荐
古韵14 小时前
用alovajs的use-fetcher,轻松搞定数据请求难题
前端·javascript·axios
学习使我快乐0117 小时前
AJAX 1——axios体验、认识URL、常用请求方法、HTTP协议、错误处理、form-serialize插件
前端·http·ajax·okhttp·axios
大众筹码9 天前
HarmonyOS---权限和http/Axios网络请求
网络·axios·harmonyos
Mr.史11 天前
Axios 封装网络请求
网络·ajax·vue·axios
尸僵打怪兽15 天前
后台数据管理系统 - 项目架构设计-Vue3+axios+Element-plus(0920)
前端·javascript·vue.js·elementui·axios·博客·后台管理系统
wuming先生20 天前
关于axios同步获取数据的问题
axios·web·异步网络
爱桥代码的程序媛23 天前
HarmonyOS开发5.0【封装request泛型方法】axios
axios·harmonyos·鸿蒙·鸿蒙系统·openharmony·封装·泛型
readmancynn24 天前
axios
前端·axios
营赢盈英1 个月前
OpenAI transcription API bad request
javascript·ai·node.js·whisper·axios·openai api
一雨方知深秋1 个月前
axios响应
开发语言·前端·javascript·数据库·vue.js·axios