当前位置:   article > 正文

AJAX请求(axios篇)

AJAX请求(axios篇)

目录

一、axios介绍

1.概念

2.功能

3.好处

二、axios用法

1.安装方法

2.GET方法

 3.POST方法

4.执行多个并发请求

5.axios API

6.请求方法的别名

7.async/await异步请求

三、axios实例

四、总结


一、axios介绍

1.概念

AJAX是“Asynchronous JavaScript and XML”的缩写,它是一种用于创建交互式网页应用程序的技术。AJAX允许在不重新加载整个网页的情况下,异步地向服务器发送请求并获取数据。这使得网页可以更加动态和交互性,而不会中断用户的操作。

Axios是一个基于Promise的HTTP客户端,用于浏览器和Node.js环境,它可以在前端和后端进行HTTP请求。它的设计简单、易于使用,提供了丰富的功能和选项来处理HTTP请求和响应。

2.功能

  1. 发送HTTP请求: Axios支持发送各种类型的HTTP请求,包括GET、POST、PUT、DELETE等。

  2. Promise API: Axios使用Promise API来处理异步请求,使得代码更加清晰和易于理解。

  3. 拦截器: 可以使用拦截器对请求和响应进行全局的处理,比如在请求发送之前添加公共的请求头,或者在响应返回后进行数据处理。

  4. 取消请求: Axios提供了取消请求的功能,可以在需要时取消正在进行的请求,避免不必要的网络请求。

  5. 错误处理: 可以方便地处理请求过程中可能发生的错误,包括网络错误、超时等。

3.好处

  1. 简单易用: Axios提供了简洁清晰的API,易于学习和使用。

  2. 跨平台: 可以在浏览器和Node.js环境中使用,适用于前后端分离的开发模式。

  3. 功能丰富: 提供了丰富的功能和选项,包括拦截器、取消请求、错误处理等,满足了各种复杂场景下的需求。

  4. 广泛支持: Axios被广泛应用于各种前端框架和库中,比如React、Vue.js等,成为了业界标准之一。

二、axios用法

1.安装方法

使用 cdn:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>

使用 npm:

$ npm install axios

使用 bower:

$ bower install axios

使用 yarn:

$ yarn add axios

使用方法:

  1. Vue.axios.get(api).then((response) => {
  2. console.log(response.data)
  3. })
  4. this.axios.get(api).then((response) => {
  5. console.log(response.data)
  6. })
  7. this.$http.get(api).then((response) => {
  8. console.log(response.data)
  9. })

2.GET方法

我们可以简单的读取数据:

  1. axios.get('https://api.example.com/data')
  2. .then(response => {
  3. console.log(response.data);
  4. })
  5. .catch(error => {
  6. console.error('Error fetching data:', error);
  7. });

 也可以读取JSON 数据

  1. const app = {
  2. data() {
  3. return {
  4. info: 'Ajax 测试!!'
  5. }
  6. },
  7. mounted () {
  8. axios
  9. .get('https://www.runoob.com/try/ajax/json_demo.json')
  10. .then(response => (this.info = response))
  11. .catch(function (error) { // 请求失败处理
  12. console.log(error);
  13. });
  14. }
  15. }
  16. Vue.createApp(app).mount('#app')

使用 response.data 读取 JSON 数据:

  1. <div id="app">
  2. <h1>网站列表</h1>
  3. <div
  4. v-for="site in info"
  5. >
  6. {{ site.name }}
  7. </div>
  8. </div>
  9. <script type = "text/javascript">
  10. const app = {
  11. data() {
  12. return {
  13. info: 'Ajax 测试!!'
  14. }
  15. },
  16. mounted () {
  17. axios
  18. .get('https://www.runoob.com/try/ajax/json_demo.json')
  19. .then(response => (this.info = response.data.sites))
  20. .catch(function (error) { // 请求失败处理
  21. console.log(error);
  22. });
  23. }
  24. }
  25. Vue.createApp(app).mount('#app')
  26. </script>

GET 方法传递参数格式如下:

  1. // 直接在 URL 上添加参数 ID=12345
  2. axios.get('/user?ID=12345')
  3. .then(function (response) {
  4. console.log(response);
  5. })
  6. .catch(function (error) {
  7. console.log(error);
  8. });
  9. // 也可以通过 params 设置参数:
  10. axios.get('/user', {
  11. params: {
  12. ID: 12345
  13. }
  14. })
  15. .then(function (response) {
  16. console.log(response);
  17. })
  18. .catch(function (error) {
  19. console.log(error);
  20. });

 3.POST方法

  1. axios.post('https://api.example.com/data', {
  2. key: 'value'
  3. })
  4. .then(response => {
  5. console.log('Response:', response.data);
  6. })
  7. .catch(error => {
  8. console.error('Error posting data:', error);
  9. });

POST 方法传递参数格式如下:

  1. axios.post('/user', {
  2. firstName: 'Fred', // 参数 firstName
  3. lastName: 'Flintstone' // 参数 lastName
  4. })
  5. .then(function (response) {
  6. console.log(response);
  7. })
  8. .catch(function (error) {
  9. console.log(error);
  10. });

4.执行多个并发请求

  1. function getUserAccount() {
  2. return axios.get('/user/12345');
  3. }
  4. function getUserPermissions() {
  5. return axios.get('/user/12345/permissions');
  6. }
  7. axios.all([getUserAccount(), getUserPermissions()])
  8. .then(axios.spread(function (acct, perms) {
  9. // 两个请求现在都执行完成
  10. }));

5.axios API

  1. axios(config)
  2. // 发送 POST 请求
  3. axios({
  4. method: 'post',
  5. url: '/user/12345',
  6. data: {
  7. firstName: 'Fred',
  8. lastName: 'Flintstone'
  9. }
  10. });
  11. // GET 请求远程图片
  12. axios({
  13. method:'get',
  14. url:'http://bit.ly/2mTM3nY',
  15. responseType:'stream'
  16. })
  17. .then(function(response) {
  18. response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
  19. });
  20. axios(url[, config])
  21. // 发送 GET 请求(默认的方法)
  22. axios('/user/12345');

6.请求方法的别名

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

7.async/await异步请求

  1. async function fetchData() {
  2. try {
  3. const response = await axios.get('https://api.example.com/data');
  4. console.log(response.data);
  5. } catch (error) {
  6. console.error('Error fetching data:', error);
  7. }
  8. }
  9. fetchData();

三、axios实例

1.使用jsonplaceholder提供的一个公开的API来获取一些示例数据。我们发送了一个GET请求到https://jsonplaceholder.typicode.com/posts,并在控制台中打印出返回的数据。

  1. // 引入Axios
  2. import axios from 'axios';
  3. // 使用Axios发送GET请求获取数据
  4. axios.get('https://jsonplaceholder.typicode.com/posts')
  5. .then(response => {
  6. // 打印返回的数据
  7. console.log('Response:', response.data);
  8. })
  9. .catch(error => {
  10. // 处理错误
  11. console.error('Error fetching data:', error);
  12. });

2.注册

  1. // 引入Axios
  2. import axios from 'axios';
  3. // 用户注册信息
  4. const userData = {
  5. username: 'example_user',
  6. email: 'example@example.com',
  7. password: 'example_password'
  8. };
  9. // 使用Axios发送POST请求进行用户注册
  10. axios.post('https://jsonplaceholder.typicode.com/posts', userData)
  11. .then(response => {
  12. // 打印注册成功后返回的用户信息
  13. console.log('User registered successfully:', response.data);
  14. })
  15. .catch(error => {
  16. // 处理注册过程中可能发生的错误
  17. console.error('Error registering user:', error);
  18. });

在这个示例中,我们创建了一个包含用户注册信息的对象userData,然后使用Axios发送了一个POST请求到https://jsonplaceholder.typicode.com/posts。在这个示例中,我们使用jsonplaceholder提供的一个模拟API来模拟用户注册过程。在这个示例中,我们使用jsonplaceholder提供的一个模拟API来模拟用户注册过程。

如果注册成功,服务器会返回注册用户的信息,并在then回调函数中打印出来;如果注册过程中发生错误,错误信息会在catch回调函数中进行处理。

这个示例演示了如何使用Axios发送POST请求并处理响应,你可以根据自己的需求来发送不同类型的请求,并对返回的数据进行相应的处理。Axios提供了丰富的功能和选项,可以满足各种不同场景和需求。

四、总结

Axios是一个流行的基于Promise的HTTP客户端库,用于浏览器和Node.js环境中进行HTTP请求。下面是Axios的一些关键特点和优势:

  1. 简单易用: Axios提供了清晰简洁的API,易于学习和使用,使得发送HTTP请求变得更加简单和高效。

  2. 功能丰富: 支持发送各种类型的HTTP请求,包括GET、POST、PUT、DELETE等,同时提供了丰富的功能和选项,比如拦截器、取消请求、错误处理等。

  3. Promise API: Axios使用Promise API来处理异步请求,使得代码更加清晰易懂,可以轻松处理异步操作。

  4. 跨平台: 可以在浏览器和Node.js环境中使用,适用于前后端分离的开发模式。

  5. 拦截器: 可以使用拦截器对请求和响应进行全局的处理,比如在请求发送之前添加公共的请求头,或者在响应返回后进行数据处理。

  6. 错误处理: 提供了方便的错误处理机制,可以处理请求过程中可能出现的各种错误,包括网络错误、超时等。

  7. 广泛支持: 被广泛应用于各种前端框架和库中,成为了业界标准之一,同时也适用于Node.js后端开发。

总的来说,Axios是一个功能强大、易用的HTTP客户端库,为开发者提供了便捷的方式来处理AJAX请求,使得开发交互式的Web应用程序变得更加简单和高效。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/452197
推荐阅读
相关标签
  

闽ICP备14008679号