之前学了vue本地应用,通过Vue提供的各种指令,对本地的数据进行操作。

但是现在很少有纯本地的应用了,或多或少都会进行网络数据的交互。这个就想要axios,内部是阿贾克斯,封装之后使用起来更加便捷,并且功能单一就是发送请求,所以容量很小,并且可以和其他框架或者库结合起来,比如说vue,所以后面就是如何用axios+vue结合起来使用。

axios 网络应用 axios基本使用_ios

下面就要去学习如何使用axios发送请求,以及获取响应的内容。

要使用axios首先要导入包,在导入axios之后,会在页面上注册全局axios对象,通过它就可以发送请求了。

首先是get请求,地址就是文档提供的接口地址。然后.then方法。

  1. 内部传递的第一个回调函数会在请求响应完成的时候触发。
  2. 第二个请求回调函数会在请求失败的时候触发。

它们的形参是可以用来获取信息,一个是服务器响应的内容,一个是服务器错误的信息。

如果想要传递参数,那么想要在url的后面接上查询字符串就可以了,中间使用?的方式分隔。

post请求语法大致和get请求一样,不同之处在于数据是以对象的形式写在Post方法的第二个参数内部。

axios 网络应用 axios基本使用_回调函数_02

下面提供两个请求,一个get请求获取笑话的接口。一个是通过post请求,注册用户的接口。

axios 网络应用 axios基本使用_ios_03

querySelector("")是获取到class=""的按钮。

axios.get方法发起请求,之后在.then方法里面传入的回调函数当中,写上处理的逻辑。

axios 网络应用 axios基本使用_vue.js_04

在response对象里面,data就是我们需要数据,像config和request,这些都是请求的信息,大部分时候都用不上它。可以看到可以在回调函数当中获取到服务器响应的内容,并且在响应成功之后才触发。

第二个回调函数在请求出错的时候触发,err就是这次的错误请求。

axios 网络应用 axios基本使用_get请求_05

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <link href="" type="text/css" rel="stylesheet"/>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>

    <style type="text/css">
    </style>
</head>

<body>    
    <!--官网提供的axios在线地址-->
    <button type="button" class="get">get请求</button>
    <button type="button" class="post">post请求</button>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

    <script type="text/javascript">
        document.querySelector(".get").onclick = function(){
            axios.get("https://autumnfish.cn/api/joke/list?num=3")
            .then(function(response){
                console.log(response);
            },function(err){
                console.log(err)
            })
        }

    </script>

</body>

</html>

post的数据是放在第二个参数里面,使用对象的方式来写。

<script type="text/javascript">
        document.querySelector(".get").onclick = function(){
            axios.get("https://autumnfish.cn/api/joke/list?num=3")
            .then(function(response){
                console.log(response);
            },function(err){
                console.log(err)
            })
        }

        document.querySelector(".post").onclick = function(){
            axios.post("https://autumnfish.cn/api/user/reg",{username: "jack"})
            .then(function(response){
                console.log(response);
            }),function(err){

            }
        }

    </script>

axios 网络应用 axios基本使用_ios_06

 有些时候data值是返回字符串,有些时候是返回对象,不同的接口返回的数据格式是不一样的。

axios 网络应用 axios基本使用_get请求_07

 可以看到所有的请求都是基于XHR,阿贾克斯,所以axios就是基于阿贾克斯的。

axios 网络应用 axios基本使用_get请求_08

axios必选先导入,再使用。和任何库一样,先导入包再去使用包。

其次是使用其提供的post或者get方法来就可以发送对应的请求。在then当中,成功触发第一个回调函数,失败的是第二个回调函数。获取到的内容具体取决于触发的是第几个回调函数。

axios 网络应用 axios基本使用_vue.js_09