axios的基本使用

在项目根目录下创建js目录,目录中添加axios.min.js文件
准备页面:testAxios.html: 实现一个简单的GET请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/axios.min.js"></script>
</head>
<body>
    <button onclick="f1()">发起get请求例子1</button>
    <script>
		function f1(){
            let url="http://localhost:8000/ylb/api/v1/user/query?uid=1021";
            axios.get(url).then( (resp)=>{
                console.log("请求成功,服务响应数据="+resp)
            }).catch((err)=>{
                console.log("请求失败:"+err)
            }).finally(()=>{})

			//类比jquery请求
			$.ajax({
				url:ur1,
				method:"get",
				success:function(resp){}
			})
        }
    </script>
</body>
</html>

这里是用axios发起一个GET请求。其中
then:是一个函数,表示请求成功时执行的
resp :是形参,表示服务器返回的数据,这个数据是由axios封装好的

注意箭头函数
箭头函数就是为了简化普通函数定义而创造的。

类比一下:

//普通函数:
function funName(参数1,参数2){
	结构体
}

//箭头函数:
(参数1,参数2)=>{
	结构体
}

如果使用普通函数,axios请求为:

axios.get(url).then(funName(resp))

使用axios的配置项发起请求

function func1(){
	let url="http://localhost:8000/ylb/api/v1/person";
	axios({
		url:url,
		method:"post",
		data:{
            'name':'zhangsan',
            'passwd':'111222'
        }
	}).then((resp)=>{
		console.log("resp="+resp)
	}) .catch( (error)=>{
        console.log("错误="+error)
    })
}


function func1(){
	let url="http://localhost:8000/ylb/api/v1/person";
	axios({
		url:url,
		method:"get",
		params:{
			uid: 001
		}
		
	}).then((resp)=>{
		console.log("resp="+resp)
	})
}

重要配置项:

{
  // `url` 是用于请求的服务器 URL
  url: '/user',

  // `method` 是创建请求时使用的方法
  method: 'get', // 默认是 get

  // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: 'https://some-domain.com/api/',
	
// `headers` 是即将被发送的自定义请求头
  headers: {'X-Requested-With': 'XMLHttpRequest'},

  // `params` 是即将与请求一起发送的 URL 参数
  // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  params: {
    ID: 12345
  },	
  // `data` 是作为请求主体被发送的数据
  // 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
 data: {
    firstName: 'Fred'
  },

  // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  // 如果请求话费了超过 `timeout` 的时间,请求将被中断
  timeout: 1000,

使用别名方法

axios.get(url[, config])
axios.delete(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])

axios返回数据

{
  // `data` 由服务器提供的响应
  data: {},

  // `status` 来自服务器响应的 HTTP 状态码
  status: 200,

  // `statusText` 来自服务器响应的 HTTP 状态信息
  statusText: 'OK',

  // `headers` 服务器响应的头
  headers: {},

  // `config` 是为请求提供的配置信息
  config: {}
}

请求和应答拦截器

请求拦截器作用:当发起请求时,需要经过请求拦截器的处理一些公共的事情后,再发送给服务端。例如用请求拦截器给每一个请求加上token参数。
应答拦截器作用:服务器返回结果,axios的then之前先执行。可以对应答内容对预先的处理。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/07c903257bbb41c2ac17ebaa225a5eb7.png

示例:

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/axios.min.js"></script>
</head>

<body>
    <button onclick="f1()">请求拦截器</button>
    <script>
        //请求拦截器
        axios.interceptors.request.use(function(config){
            //请求之前做些什么:比如改变请求参数,设置timeout等等
            console.log("======请求之前=====")
            config.url = config.url+"&name=lisi";
            return config;
        },function (error) {
            // 对请求错误做些什么
            return Promise.reject(error);
        })

        //应答拦截器
        axios.interceptors.response.use(function(response){
            //对响应做什么
            console.log("=====响应数据了=======")
            return response;

        },function(error){
            // 对响应错误做点什么
            return Promise.reject(error);
        })


        function f1(){
            let url="http://localhost:8000/ylb/api/v1/user/query?uid=1021";
            axios.get(url).then( (resp)=>{
                console.log("请求成功,服务响应数据="+resp)
            }).catch((err)=>{
                console.log("请求失败:"+err)
            })
        }


    </script>
</body>

注意:
其中的config和response
config:请求的配置
response:服务器返回的数据

1.5全局的 axios 默认值

axios.defaults.baseURL = ‘https://api.example.com’;
axios.defaults.timeout=50000;
axios.defaults.headers.common[‘Authorization’] = AUTH_TOKEN;
axios.defaults.headers.post[‘Content-Type’] = ‘application/x-www-form-urlencoded’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值