http类
import { baseUrl } from "./config"; //引入config.js中的配置 import axios from "axios"; //引入axios import qs from "querystringify"; //form-Data请求时的工具类 class Http{ axios = null; lastRequestIntercept = null; constructor() { //在初始化方法中,创建一个 axios的实例 , 并配置一些基础配置 this.axios = axios.create({ baseURL:baseUrl, timeout:10000, }); //为新建的 实例添加一个响应 响应 响应 拦截器, 可以根据情况, 在err 中,设置,如里返回的参数为401,就让用户跳转到 登录页等功能, 自已写, 也可以把这个拦截器删除掉 this.axios.interceptors.response.use(response=>{ return response.data; },(err)=>{ console.log(err) if(err){ } return Promise.reject(err) }) } //dataType的选项有 queryString == qs, formData, json //封装一个请求的方法 request({url,data,method="get",auth=false,dataType="json"}){ //如果请求中需要token,就在store缓存中取出token,并设置在请求头中 if(auth){ //这是一个请求拦截器,可以在请求之前添加,任何想要添加的数据 this.axios.interceptors.request.use((config)=>{ let token = localStorage.getItem("token") token && (config.headers.token = token); console.log(config) return config; },(err)=>{ return Promise.reject(err) }) } //如果是get方法, 直接传参数就可以了 这里的 data是一个json对象 如 data = {aparam:"aaa",bparam:"bbbb"} if(method === "get"){ return this.axios.get(url,{params:data}) } //下面的 data 都是一个对象参数 //当post传值时, 有可能是 json 的 也有可能是 qs 的, 也有可以是文件类型的 formdata的,下面的方法根据情况,分别组织了参数格式,以及header的头,正确传参可以了 if(method === "post"){ if(dataType === "json") { return this.axios.post(url, data, { headers:{"Content-Type":"application/json"} }) }else if(dataType === "formData"){ let formData = new FormData(); Object.keys(data).forEach((key)=>{ formData.append(key,data[key]) }) return this.axios.post(url, formData, {headers:{"Content-Type":"multipart/form-data"}}) }else if(dataType === "qs"){ return this.axios.post(url,qs.stringify(data),{ headers:{"Content-Type":"application/x-www-form-urlencoded"} }) } } } } export { Http }
业务类 api 继承 http
api.js
import {Http} from "@/utils/http" class api extends Http{ static getinstance(){ return new api(); } login(data){ return this.request({ url:"/api/user/oauth2", method:"post", data, dataType:"formData" }) } //用户是否是新用户 isnewuser(){ return this.request({ url:"/api/user/isNew", method:"post", auth:true }) } //添加抢票 addrobinfo(data){ return this.request({ url:"/api/ticket/add", method:"post", data, dataType:"formData", auth:true, }) } //抢票记录 robrecord(){ return this.request({ url:"/api/ticket/index", method:"post", auth:true }) } } export default api
页面中使用时
改进方法, 每一次都来 new api()的实例有点麻烦,所以, 我在 api 的类中添加了一个静态方法
有了静态方法,就不用每次使用时就要new了
看一下使用的代码
猜你喜欢
- 19天前(希尔顿2021活动)希尔顿集团618盛夏大促开启
- 19天前(大理悦云雅阁酒店电话)雅阁酒店集团|端午佳节礼遇,大理悦云雅阁度假酒店
- 19天前(安徽民宿发展报告)首届安徽省乡村民宿创意设计大赛启动
- 19天前(瑞士大酒店-自助餐怎么样)瑞意心旅,以食为先 瑞士酒店开启全新"瑞士早餐计划"
- 19天前(四川推进世界重要旅游目的地建设工作)四川推进世界重要旅游目的地建设
- 19天前(武隆旅游门票)炸了!519中国旅游日武隆甩出王炸福利,59.9元通玩6大景点?!
- 19天前(辽宁新增6个国家4a级旅游景区有哪些)辽宁新增6个国家4A级旅游景区
- 19天前(殷建祥简历)全国十大牛商解码:殷建祥如何用178天技术突围打造星空梦星空房
- 19天前(福州“一县一桌菜”“两马乡宴”品鉴会圆满举办,马尾美食共叙血脉亲情)福州“一县一桌菜”“两马乡宴”品鉴会圆满举办,马尾美食共叙血脉亲情
- 19天前(泛舟诗海觅春迹什么意思)泛舟觅桃源,又一头部机构下场文旅赛道
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章