Javaweb学习之Vue_Axios网络请求(七)

认识Axios

Axios 是一个流行的 JavaScript 库,用于简化 HTTP 请求的发送和处理。它基于 Promise 的概念,使得 HTTP 请求和响应处理更加直观和易于管理。Axios 可以在浏览器和 Node.js 环境中使用,主要用于从客户端向服务器发送请求并接收响应。

主要特点

  1. 基于 Promise :Axios 返回的请求和响应都是 Promise 对象,使得异步操作更加简单和直观,便于使用 async/await 语法进行处理。

  2. 支持各种 HTTP 方法 :包括 GETPOSTPUTDELETEPATCH 等,允许用户方便地执行各种类型的 HTTP 请求。

  3. 请求和响应拦截器

    • 请求拦截器:在请求发送之前,可以对请求进行修改(如添加认证头、修改数据格式等)。
    • 响应拦截器:在响应数据返回后,可以对响应进行处理(如统一处理错误、格式化数据等)。
  4. 请求和响应数据的处理:Axios 自动将响应数据转换为 JSON 格式,简化了数据处理。

  5. 错误处理:提供详细的错误信息,包括 HTTP 状态码、错误消息等,便于错误排查和处理。

  6. 取消请求:支持取消请求,适用于需要中止请求的场景(如用户导航离开当前页面)。

  7. 支持跨域请求:能够处理 CORS(跨域资源共享)问题,适合用于现代 web 应用中与不同源进行数据交互的需求。

Get请求

用途

  • GET请求主要用于从服务器请求数据。它是HTTP协议中最常用的方法之一,用于请求访问已被URI(统一资源标识符)识别的资源。

特点

  • 数据附加在URL后 :GET请求的数据会附加在URL之后,以?分割URL和传输数据,参数之间以&相连。由于URL的长度限制,GET请求发送的数据量有限。
  • 数据可见性:由于数据附加在URL上,因此数据会在浏览器的历史记录、服务器日志以及网络传输中明文出现,不适合发送敏感信息。
  • 可缓存性:GET请求是可以被缓存的,如果请求的资源在指定的时间内没有发生改变,那么可以直接从浏览器缓存中获取资源,而不需要重新发送请求到服务器。

Post请求

用途

  • POST请求主要用于向服务器提交数据,如提交表单数据或上传文件。与GET请求不同,POST请求的数据不会附加在URL上,而是作为HTTP消息的主体发送给服务器。

特点

  • 数据在消息体中:POST请求发送的数据位于HTTP消息的主体中,因此可以发送大量数据。同时,由于数据不在URL中,因此不会受到URL长度限制的影响。
  • 数据安全性:由于POST请求的数据不会附加在URL上,因此相对于GET请求来说,它在一定程度上提供了更好的安全性。然而,为了保证数据的安全性,仍然需要使用HTTPS等安全协议来保护数据在传输过程中的安全。
  • 不可缓存性:POST请求是不能被缓存的,因为每次请求都包含不同的数据。

安装

你可以通过 npm 安装 Axios:

javascript 复制代码
npm install --save axios

组件引入

javascript 复制代码
import axios from "axios"

小示例

javascript 复制代码
<script>
import axios from "axios"; //引入axios   这个是局部引入
//全局引入在main函数里面,使用全局时axios改为this.$axios
import querystring from "querystring";

export default {
  name: "HelloWorld",
  data() {
    return {
      chengpin: {},
    };
  },
  mounted() {
    //get请求方式
    axios({
      method: "get",
      url: "http://iwenwiki.com/api/blueberrypai/getChengpinDetails.php",
    }).then((res) => {
      this.chengpin = res.data.chengpinDetails[0];
    });

    //post请求方式
    //参数需要额外的处理一下,安装依赖 npm install --save querystring
    //转换参数格式:qs.stringify({})
    axios({
      method: "post",
      url: "http://iwenwiki.com/api/blueberrypai/getChengpinDetails.php",
      data: querystring.stringify({
        user_id: "[email protected]",
        password: "iwen123",
        verification_code: "crfvw",
      }),
    }).then((res) => {
      console.log(res.data);
    });
  },
};
</script>

全局引用

javascript 复制代码
import axios from "axios"

const app=createApp(App);
app.config.globalProperties.$axios=axios
app.mount('#app')

//在组件中使用
this.$axios

小示例

javascript 复制代码
<script>
//import axios from "axios"; //引入axios   这个是局部引入
//全局引入在main函数里面,使用全局时axios改为this.$axios
import querystring from "querystring";

export default {
  name: "HelloWorld",
  data() {
    return {
      chengpin: {},
    };
  },
  mounted() {
    //get的简洁方式
    this.$axios
      .get("http://iwenwiki.com/api/blueberrypai/getChengpinDetails.php")
      .then((res) => {
        console.log(res.data);
      });

    this.$axios
      .post(
        "http://iwenwiki.com/api/blueberrypai/getChengpinDetails.php",
        querystring.stringify({
          user_id: "[email protected]",
          password: "iwen123",
          verification_code: "crfvw",
        })
      )
      .then((res) => {
        console.log(res.data);
      });
  },
};
</script>

未完待续......

相关推荐
张张张31218 分钟前
4.2学习总结 Java:list系列集合
java·学习
SuperW32 分钟前
linux课程学习二——缓存
学习
庸俗今天不摸鱼34 分钟前
【万字总结】前端全方位性能优化指南(十)——自适应优化系统、遗传算法调参、Service Worker智能降级方案
前端·性能优化·webassembly
黄毛火烧雪下41 分钟前
React Context API 用于在组件树中共享全局状态
前端·javascript·react.js
Apifox1 小时前
如何在 Apifox 中通过 CLI 运行包含云端数据库连接配置的测试场景
前端·后端·程序员
一张假钞1 小时前
Firefox默认在新标签页打开收藏栏链接
前端·firefox
高达可以过山车不行1 小时前
Firefox账号同步书签不一致(火狐浏览器书签同步不一致)
前端·firefox
m0_593758101 小时前
firefox 136.0.4版本离线安装MarkDown插件
前端·firefox
掘金一周1 小时前
金石焕新程 >> 瓜分万元现金大奖征文活动即将回归 | 掘金一周 4.3
前端·人工智能·后端
三翼鸟数字化技术团队1 小时前
Vue自定义指令最佳实践教程
前端·vue.js