一、安装axios

npm install axios
npm install qs

二、新建unit文件夹,并新建axios.js http.js
在这里插入图片描述

1.axios.js
element-plus 这个提前安装了,下一篇再写上


import axios from "axios";
// 使用element-plus ElMessage做消息提醒
import { ElMessage } from 'element-plus'
//1. 创建新的axios实例,
const service = axios.create({
  // 公共接口 开发环境还是线上环境也可以用api
  baseURL:"/api",
  // 超时时间 单位是ms,这里设置了5s的超时时间
  timeout: 50000,
});
// 2.请求拦截器
service.interceptors.request.use(
  (config) => {
    //发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
    //  config.data = qs.stringify(config.data); //数据转化,也可以使用qs转换
    //  config.headers = {
    //    'Content-Type':'application/x-www-form-urlencoded' //配置请求头
    //  }
    //注意使用token的时候需要引入cookie方法或者用本地localStorage等方法,推荐js-cookie
    //  const token = getCookie('名称');//这里取token之前,你肯定需要先拿到token,存一下
    //  if(token){
    //     config.params = {'token':token} //如果要求携带在参数中
    //     config.headers.token= token; //如果要求携带在请求头中
    //   }
    // config.method === "post"
    //   ? (config.data = qs.stringify({ ...config.data }))
    //   : (config.params = { ...config.params });
    return config;
  },
  (error) => {
    Promise.reject(error);
  }
);

// 3.响应拦截器
service.interceptors.response.use(
  (response) => {
    //接收到响应数据并成功后的一些共有的处理,关闭loading等

    return response;
  },
  (error) => {
    /***** 接收到异常响应的处理开始 *****/
    if (error && error.response) {
      // 1.公共错误处理
      // 2.根据响应码具体处理
      switch (error.response.status) {
        case 400:
          ElMessage.error = "错误请求";
          break;
        case 401:
          ElMessage.error = "未授权,请重新登录";
          break;
        case 403:
          ElMessage.error = "拒绝访问";
          break;
        case 404:
          ElMessage.error = "请求错误,未找到该资源";
          //window.location.href = "/NotFound"
          break;
        case 405:
          ElMessage.error = "请求方法未允许";
          break;
        case 408:
          ElMessage.error = "请求超时";
          break;
        case 500:
          ElMessage.error = "服务器端出错";
          break;
        case 501:
          ElMessage.error = "网络未实现";
          break;
        case 502:
          ElMessage.error = "网络错误";
          break;
        case 503:
          ElMessage.error = "服务不可用";
          break;
        case 504:
          ElMessage.error = "网络超时";
          break;
        case 505:
          ElMessage.error = "http版本不支持该请求";
          break;
        default:
          ElMessage.error = `连接错误${error.response.status}`;
      }
    } else {
      // 超时处理
      if (JSON.stringify(error).includes("timeout")) {
        ElMessage.error("服务器响应超时,请刷新当前页");
      }
      ElMessage.error("连接服务器失败");
    }

    //ElMessage.error(ElMessage.error)
    /***** 处理结束 *****/
    //如果不需要错误处理,以上的处理过程都可省略
    return Promise.resolve(error.response);
  }
);
//4.导出
export default service;

2.http.js

import request from "./axios";
import qs from "qs";
// json格式请求头
const headerJSON = {
  "Content-Type": "application/json",
};
// FormData格式请求头
const headerFormData = {
  "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
};
const http = {
  /**
   * methods: 请求
   * @param url 请求地址
   * @param params 请求参数
   * @param json 判断数据发送是否是json格式
   */
  get(url, params,json) {
    const config = {
      method: "get",
      url: url,
      headers: headerFormData
    };
    if (params) config.params = params;
    return request(config);
  },
  post(url, params,json) {
    const config = {
      method: "post",
      url: url,
      headers: json ? headerJSON : headerFormData
    };
    if (params) config.data = json?params: qs.stringify(params);
    
    return request(config);
  },
  put(url, params,json) {
    const config = {
      method: "put",
      url: url,
      headers: headerFormData
    };
    if (params) config.params = params;
    return request(config);
  },
  delete(url, params,json) {
    const config = {
      method: "delete",
      url: url,
      headers: headerFormData
    };
    if (params) config.params = params;
    return request(config);
  },
};
//导出
export default http;

四、新建一个api文件,并新建个home.js
在这里插入图片描述
1.home.js

import http from "../unit/http";

export const recordFind = (data) => {
  return http.post( "/record/find",
    data,
    false
  );
};

2.页面调用
在home.vue页面调用

import { recordFind } from "@/api/home";
data(){
	return{
		newsList:[],
 	}
}
created() {
    this.recordFind()
  },

  methods: {
    recordFind() {
      recordFind({
        limit: 5,
        subOrgUuid: "****",
      }).then((res) => {
        console.log(res);
        if (res.data != "" && res.data != null) {
          this.newsList = res.data;
        }
      });
    },
  },

小结:下一篇是element-plus

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐