Axios

在vue中建议使用axios 插件来实现异步请求
该插件基于promise

第一节、安装

npm i  axios  (定位到项目的根目录)

第二节、 使用

import axios  from 'axios'
//如果是get提交
let promise对象=axios({
	url:"",
	method:"get",
	//提交参数
	params:{
		
	}
})
//如果是post提交
let promise对象=axios({
	url:"",
	method:"post",
	//提交参数
	data:{
		
	}
})

第三节、 axios的封装

目录结构:

src
	http目录
		modules目录  -->分模块
			users.js  --->具体的请求
			stus.js  --->具体的请求
			clas.js  --->具体的请求
		axios.js ---》封装了自己的axios
		http.js -->合并modules目录中所有的模块
		main.js-->配置全局属性http,方便以后在任意组件中通过this.即可使用

axios.js

//引入axios
import axios from 'axios'
//配置
let newaxios= axios.create({
    //配置前缀路径,以后真正发请求时直接用/就能够代表http://localhost:3000
    baseURL:"http://localhost:3000",
    //配置超时,如果服务器超过3秒未响应,则直接报错,给客户一个回顾
    timeout:3000
})
//axios提供了两个拦截器,一个是拦截请求,一个是拦截响应
//拦截响应:服务器响应数据了,拿到数据后立马被拦截,我们能够在拦截中写自己业务(比如过滤数据)
newaxios.interceptors.response.use(config=>{
    // 响应数据正常时进入该方法
    console.log("config",config);
    //在请求对象中的请求头属性中挂载token
    config.headers.Authorization=localStorage.token
    //放行
    return config.data
},err=>{
    console.log(err);
    //后台报错,响应出问题时进入该方法 (捕获异常   )
})
//拦截请求:在发送请求之前会被拦截,我们能够在拦截中写自己业务
//暴露
export default  newaxios;

users.js

import axios from '@/http/axios.js'
//验证账号是否存在
 function checkUserNameIsExists(params){
     return axios({
        url:"/users/checkUserNameIsExists",
        params
    })
}
//注册
function register(data){
    return axios({
        url:"/users/register",
        method:"post",
        data
    })
}
//登录
function login(params){
    return axios({
        url:"/users/login",
        method:"get",
        params
    })
}
//暴露
export default {
    checkUserNameIsExists,register,login
}

http.js

//合并所有模块
import  users from './modules/users.js'
// import  clas from './modules/clas.js'
// import  stus from './modules/stus.js'
//暴露
export default {
    users,
    // clas,
    // stus
}

main.js

//引入http
import http from '@/http/http.js'
//把http模块注入到Vue原型链中 (配置全局属性)
//$http自定义名字
Vue.prototype.$http=http

vue:

            let res=await this.$http.users.register(this.form)
            if(res.code==200){
                alert("注册成功")
            }else{
                alert("注册失败")
            }

处理401问题

//引入element的消息框
import { Message } from 'element-ui';
//引入路由对象
import router from '@/router'
//拦截响应:服务器响应数据了,拿到数据后立马被拦截,我们能够在拦截中写自己业务(比如过滤数据)
newaxios.interceptors.response.use(config=>{
    // 响应数据正常时进入该方法
    // console.log("config",config);
    //放行
    return config.data
},err=>{
    if(err.response.status==401){
        // Message({
        //     message:"请登录",
        //     type:"warning"
        // })
        Message.warning("请登录")
        //跳转
        router.push("/login")
    }else if(err.response.status==400){
        //以后针对不同的错,给客户不同的提醒
    }
   
    //后台报错,响应出问题时进入该方法 (捕获异常   )
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值