axios的基本使用

在项目根目录下创建js目录,目录中添加axios.min.js文件

准备页面:testAxios.html: 实现一个简单的GET请求

html 复制代码
<!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封装好的

注意箭头函数

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

类比一下:

javascript 复制代码
//普通函数:
function funName(参数1,参数2){
	结构体
}

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

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

javascript 复制代码
axios.get(url).then(funName(resp))

使用axios的配置项发起请求

javascript 复制代码
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)
	})
}

重要配置项:

javascript 复制代码
{
  // `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返回数据

javascript 复制代码
{
  // `data` 由服务器提供的响应
  data: {},

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

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

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

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

请求和应答拦截器

请求拦截器作用:当发起请求时,需要经过请求拦截器的处理一些公共的事情后,再发送给服务端。例如用请求拦截器给每一个请求加上token参数。

应答拦截器作用:服务器返回结果,axios的then之前先执行。可以对应答内容对预先的处理。

示例:

javascript 复制代码
<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';

相关推荐
来恩10034 天前
jQuery对Ajax的支持
前端·ajax·jquery
流年如夢5 天前
类和对象(中)
开发语言·javascript·ajax·ecmascript
努力成为AK大王6 天前
从前端到数据库:一个 Web 项目的完整通信链路解析
前端·数据库·ajax·jdbc
步十人10 天前
【JavaScript】通过AJAX技术让前端发请求到后端
javascript·ajax·okhttp
XiYang-DING10 天前
【Spring】 Ajax
spring·ajax·okhttp
小陈的进阶之路17 天前
Python系列课(11)——PySpark
开发语言·python·ajax
TANGLONG22218 天前
【C++】继承详解——基类/派生类、作用域、默认函数、菱形继承(超详细)
java·c语言·c++·经验分享·笔记·ajax
Bechamz19 天前
大数据开发学习Day31
大数据·学习·ajax
yqcoder21 天前
原生 AJAX 揭秘:如何使用 XHR 发起请求
前端·ajax·okhttp
2301_8156453822 天前
异步编程(axios)
ajax