Axios:贯穿前后端的数据链

Axios:贯穿前后端的数据链

什么是axios?

  1. axios是一个基于promise网络请求库
  2. axios可以实现HTTP协议的各种方法的网络请求
  3. 目前axios是前后端分离开发模式中应用最广泛的网络请求库

axios的优点

  1. axios包尺寸小且提供了易于拓展的接口
  2. axios专注于实现网络请求
  3. axios上手容易,易学习

axios处理get请求

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		
		// // 定义获取随机狗图片的函数
		function getRandomDogImage() {
		  // Dog API的URL,用于获取随机狗图片
		  const dogApiUrl = 'https://dog.ceo/api/breeds/image/random';
		
		  // 使用axios发送GET请求
		  axios.get(dogApiUrl)
		    .then(function (response) {
		      // 请求成功,处理响应数据
		      console.log('Random dog image URL:', response.data.message);
		      // 这里你可以将图片URL设置到<img>标签的src属性,或者进行其他操作
		    })
		    .catch(function (error) {
		      // 请求失败,处理错误
		      console.error('Error fetching random dog image:', error);
		    });
		}
		
		// 调用函数
		getRandomDogImage();
		
	</script>
</html>

axios处理post请求

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		
		function createUser() {
		      // JSONPlaceholder的URL,用于创建新用户
		      const usersUrl = 'https://jsonplaceholder.typicode.com/users';
		
		      // 准备要发送的数据
		      const userData = {
		        name: 'llr'
		      };
		
		      // 使用axios发送POST请求
		      axios.post(usersUrl, userData)
		        .then(function (response) {
		          // 请求成功,处理响应数据
		          console.log('User created:', response.data);
		        })
		        .catch(function (error) {
		          // 请求失败,处理错误
		          console.log('Error creating user:', error);
		        });
		    }
		
		    // 调用函数
		    createUser();
		
	</script>
</html>

axios并发请求处理

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		
		function createUser() {
		      // JSONPlaceholder的URL,用于创建新用户
		      const usersUrl = 'https://jsonplaceholder.typicode.com/users';
		
		      // 准备要发送的数据
		      const userData = {
		        name: 'llr'
		      };
		
		      // 使用axios发送POST请求
		      axios.all(
			  [
				  axios.get('https://dog.ceo/api/breeds/image/random'),
				  axios.post(usersUrl,userData)
			  ])
		        .then(function (response) {
		          console.log(response);
		          console.log(response[0].data);
		          console.log(response[1].data);
		        })
		        .catch(function (error) {
		          console.log(error);
		        });
		    }
		
		    // 调用函数
		    createUser();
		
	</script>
</html>

axios全局变量配置

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		// 模拟配置文件
		axios.defaults.baseURL = 'https://dog.ceo/api/breeds/image/';
		
		
		function getRandomDogImage() {
		  const dogApiUrl = 'random';
		
		  axios.get(dogApiUrl)
		    .then(function (response) {
		      console.log('Random dog image URL:', response.data.message);
		    })
		    .catch(function (error) {
		      console.error('Error fetching random dog image:', error);
		    });
		}

		getRandomDogImage();
		
	</script>
</html>

axios的实例封装

创建axios实例允许您为特定的配置项设置默认值。这意味着您可以为所有请求预设一些通用的配置,如基础URL、请求头、响应类型等,而无需在每次发送请求时重复设置。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		
		// axios实例封装
		let dog = axios.create({
			baseURL: 'https://dog.ceo/api/'
		})
		let users = axios.create({
			baseURL: 'https://jsonplaceholder.typicode.com/'
		})
		
		
		axios.all(
		[
		  dog.get('breeds/image/random'),
		  users.post('users',{
		    name:'zs',
			email:'zs@qq.com'
		  })
		])
		.then(function (response) {
			console.log(response);
			console.log(response[0].data);
			console.log(response[1].data);
		})
		.catch(function (error) {
			console.log(error);
		});
		
	</script>
</html>

axios中拦截器

在请求发送前或响应返回后执行自定义逻辑。

两种类型的拦截器:

  • 请求拦截器:请求拦截器用于在请求发送到服务器之前修改请求。这是添加认证令牌、设置公共请求头、转换请求数据等任务的理想场所。
  • 响应拦截器:响应拦截器用于在响应返回到客户端之前修改响应。这是处理HTTP状态码、统一错误处理、转换响应数据等任务的理想场所。

求拦截器和响应拦截器的回调函数都应该返回一些东西:

  • 请求拦截器应该返回修改后的config对象,或者如果需要取消请求,则返回Promise.reject
  • 响应拦截器应该返回修改后的响应数据,或者如果需要拒绝响应,则返回Promise.reject
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
	</head>
	<body>
	</body>
	<script>
		
		// 请求拦截器
		axios.interceptors.request.use( (config) => {
			console.log("请求拦截器")
			return config
		}, (err) => {
			console.log("请求拦截器请求错误")
		} )
		
		// 响应拦截器
		axios.interceptors.response.use( (response) => {
			console.log("响应拦截器")
			return response
		}, (err) => {
			console.log("响应拦截器请求错误")
		} )

		const dogApiUrl = 'https://dog.ceo/api/breeds/image/random';
		
		axios.get(dogApiUrl)
		.then(function (response) {
		    console.log('Random dog image URL:', response.data.message);
		})
		.catch(function (error) {
		    console.error('Error fetching random dog image:', error);
		});
	
	</script>
</html>

记住,生活就像一盒巧克力,你永远不知道下一块会是什么味道——除非你先读了包装盒上的成分表hhhh

相关推荐

  1. Axios贯穿前后数据链

    2024-03-18 07:34:05       41 阅读
  2. axios实现前后通信报错Unsupported Media

    2024-03-18 07:34:05       29 阅读
  3. 前后交互:axios 和 json;springboot 和 vue

    2024-03-18 07:34:05       28 阅读
  4. 前端处理axios请求下载后返回文件流

    2024-03-18 07:34:05       35 阅读
  5. axios下载接口后返回了json但前端得到是blob

    2024-03-18 07:34:05       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 07:34:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 07:34:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 07:34:05       87 阅读
  4. Python语言-面向对象

    2024-03-18 07:34:05       96 阅读

热门阅读

  1. ArrayList和LinkedList的区别,以及应用场景

    2024-03-18 07:34:05       41 阅读
  2. flask 继续学习

    2024-03-18 07:34:05       47 阅读
  3. Spring底层核心原理解析

    2024-03-18 07:34:05       40 阅读
  4. 清理ubuntu空间

    2024-03-18 07:34:05       41 阅读
  5. ubuntu(jammy)安装docker步骤

    2024-03-18 07:34:05       41 阅读
  6. A Decade’s Battle on Dataset Bias: Are We There Yet

    2024-03-18 07:34:05       44 阅读
  7. Llama 2: 深入探讨ChatGPT的开源挑战者

    2024-03-18 07:34:05       42 阅读
  8. Spring Cloud - Eureka版-学习理解

    2024-03-18 07:34:05       45 阅读
  9. vue2和vue3的区别

    2024-03-18 07:34:05       44 阅读