jQuery中的axios

本文介绍了Axios,一个基于Promise的HTTP库,与jQuery的AJAX进行对比。Axios适用于现代前端MVVM模式,拥有特性如Promise API、拦截器、自动转换JSON等。相较于jQuery AJAX,Axios更轻量且更适合当前的前端开发需求。文中还详细阐述了axios的原生使用方法以及params和data在POST请求中的区别。

axios请求的使用


Axios 是一个基于 promise (Promise 是异步编程的一种解决方案)的 HTTP 库,可以用在浏览器和 node.js 中

axios与ajax的区别:

axios是通过promise实现对ajax技术的一种封装,就像JQuery实现ajax封装一样。简单来说就是:ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。也就是说,jQuery 将请求技术进行了封装 变成了 ajax , 而通过 promise 又把 ajax 进行封装就成了 axios。axios是ajax,ajax不止axios。

有了ajax,为什么还要使用axios?
 在现在的前端 mvvm 模式下 axios 更适合于数据请求。

它本身具有以下特征:

从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据
客户端支持防止CSRF/XSRF
jQuery ajax:

本身是针对MVC的编程,不符合现在前端MVVM
基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案
JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)
axios的原生使用:

axios({
      url:'http://47.93.206.13:8002/user/login',
      // baseURL:'http://47.93.206.13:8002',
      method:'post',
      // params:    用于get请求
      data:{    //用于post请求
        username:'admin1',
        password:'123321'   
      }
    }).then((res) => {
      console.log(res);
    })


 axios快捷方法:

/ 引入
let axios=require('axios')//到当前node_modules找,找不到再往上找
// 封装写法
axios.get('http://47.107.65.238:8888/index/article/pageQuery?page=1&pageSize=10')
  .then(function (response) {
    console.log(response);
  })
//axios#get(url[, config])
axios.get('/index/article/pageQuery',{
    baseURL:'http://47.107.65.238:8888',
    params:{
      page:1,pageSize:10,
    }
  })
  .then(function (response) {
    console.log(response);
  })
  // axios.defaults.baseURL = 'http://47.107.65.238:8888';  baseURL也可以在外部默认全局定义


 使用注意点:axios 会自动将对象转换为json字符串,请求头默认格式为:contentType=“application/json”,而$.ajax()  会自动将对象转换为查询字符串,对jquery的ajax来说 请求头默认为 contentType='application/x-www-form-urlencoded' 。

axios与ajax代码区别及字符格式转化:

 // ajax与axios区别
  // ajax默认为查询字符串
  $.ajax({
     method: "get",
     url: "http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac",
    data: {
        info: "邯郸天气"
     },
    // 如果为JSON格式要有以下操作
    // data: JSON.stringify({
    //         info: "邯郸天气"
    // }),
    // contentType='application/json'
    success:function(res){
          console.log(res)  //直接获取JSON里面data里面的数据(以查询字符串查到的)
    },
  });
// axios请求默认json格式字符串
  axios({
     method: "get",
     url: "http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac",
    params: {
        info: "邯郸天气"
       },
     }).then((res)=>{
       console.log(res.data)//通过点data才与上面的ajax打印结果一样(以JSON查到的)
  });

  // post请求 如果要求是查询字符串形式

//   axios({
//      method: "post",
//      url: "",
//     obj={
//         info: "邯郸天气"
//      },
//       data:Qs.stringify(obj)//转换为查询字符串
//      }).then((res)=>{
//        console.log(res.data)
//   });


axios请求类型params和data的区别

params是添加到url的请求字符串中的,用于get请求。

data是添加到请求体(body)中的, 用于post请求。

 比如对于下面的get请求:

axios({
     method: "get",

     url: "http://www.tuling123.com/openapi/api?key=20ff1803ff65429b809a310653c9daac",

    params: {
        info: "邯郸天气"},

     }).then((res)=>{
       console.log(res.data)

  });


如果我们将params修改为data,显然是不能请求成功的,因为get请求中不存在data这个选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值