axios请求封装,适用于RN,React,Vue,Uniapp(相对于前面几个新增个自定义header头)

axios.js

js 复制代码
import axios from 'axios';
const instace = axios.create({
  baseURL: 'https://internal.takehr.cn', //接口地址
  timeout: 5000, //超时时间
});

//配置请求拦截器,在请求之前的数据处理,比如在请求头添加token,所有的请求都会经过拦截器
instace.interceptors.request.use(
  //config:该参数表示当前请求的配置对象
  config => {
    console.log('config', config);
    return config;
  },
  err => {
    return Promise.reject(err); //将错误消息挂到promise的失败函数上
  },
);

//配置响应拦截器
// 响应拦截器:在请求响应之后对数据处理,比如:登录失败、请求数据失败的处理
instace.interceptors.response.use(
  response => {
    return response; //这里的response就是请求成功后的res , response.data即是请求成功后回调函数内的参数res.data
  },
  err => {
    return Promise.reject(err); //将错误消息挂到promise的失败函数上
  },
);

//封装请求的api
const callapi = (method = 'GET', url, data = {}, customHeaders = {}) => {
  return instace({
    method,
    url,
    params: method === 'GET' ? data : {},
    data: method === 'POST' ? data : {},
    ...customHeaders,
  });
};
//封装GET,POST请求函数
export const getapi = (url, data, customHeaders) => callapi('GET', url, data, customHeaders);
export const postapi = (url, data, customHeaders) => callapi('POST', url, data, customHeaders);

index.js

js 复制代码
import {getapi, postapi} from './axios';
export const login = data => postapi('/api/v1.login/signin', data); // 用户登录
export const register = data => postapi('/api/v1.login/signup', data); // 用户注册
export const SendVerificationCode = data => postapi('/api/v1.login/vertiy', data); // 使用邮箱验证码登录
export const validateResetPasswordEmail = data =>  postapi('/api/v1.login/findaccount', data); // 忘记密码邮箱校验
export const forgetPassword = data => postapi('/api/v1.login/resetPwd', data); // 忘记密码
export const photo = (data, customHeaders) => postapi('/api/upload/image', data, customHeaders);

使用

js 复制代码
import { postapi } from './index.js'

// 参数一:请求参数
// 参数二:配置请求header头
postapi({name:Jack},{headers:{config:'...'}}).then((res)=>{
	console.log(res)
})
相关推荐
pe7er4 分钟前
使用 types / typings 实现全局 TypeScript 类型定义,无需 import/export
前端·javascript·vue.js
蓝胖子的多啦A梦1 小时前
Vue+element 日期时间组件选择器精确到分钟,禁止选秒的配置
前端·javascript·vue.js·elementui·时间选选择器·样式修改
海天胜景1 小时前
vue3 el-table 列增加 自定义排序逻辑
javascript·vue.js·elementui
用户3802258598241 小时前
vue3源码解析:diff算法之patchChildren函数分析
前端·vue.js
前端小盆友2 小时前
从零实现一个GPT 【React + Express】--- 【2】实现对话流和停止生成
前端·gpt·react.js
源码站~2 小时前
基于Flask+Vue的豆瓣音乐分析与推荐系统
vue.js·python·flask·毕业设计·毕设·校园·豆瓣音乐
OLong2 小时前
2025年最强React插件,支持大量快捷操作
前端·react.js·visual studio code
江城开朗的豌豆2 小时前
路由守卫通关秘籍:这些钩子函数让你的页面跳转稳如老狗!
前端·javascript·vue.js
加减法原则2 小时前
Vue 模板引用(ref)全面指南:从基础到高级应用
vue.js
摸鱼仙人~2 小时前
重塑智能体决策路径:深入理解 ReAct 框架
前端·react.js·前端框架