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了
看一下使用的代码
猜你喜欢
- 18天前(哈弗h9优惠9万是真的吗)热浪来袭,哈弗H9超值补贴火热加码
- 18天前(中旅酒店 维景)中旅酒店首次AI数字人直播亮相南京维景
- 18天前(瑞虎7plus2021款)重塑10万级SUV价值标杆,全新一代瑞虎7PLUS冠军版给你惊喜
- 18天前(福朋喜来登酒店宴会厅)福朋喜来登品牌亮相北部湾城市群 阳江中心福朋喜来登酒店开业
- 18天前(甘州区文化旅游局)2025甘津文旅资源对接推介会在兰州举办
- 18天前(“清透会呼吸”轻松拿捏春日出游氛围感)“清透会呼吸”轻松拿捏春日出游氛围感
- 18天前(澳涞山庄见证北欧零碳到中国实践,世界十佳环境保护城市榜单发布)澳涞山庄见证北欧零碳到中国实践,世界十佳环境保护城市榜单发布
- 18天前(安岚度假村及酒店推出"山海之约"目的地婚礼计划)安岚度假村及酒店推出"山海之约"目的地婚礼计划
- 18天前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- 18天前(海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章