Vue-axios

Posted 未来。。。one

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue-axios相关的知识,希望对你有一定的参考价值。

1、axios是什么?

axios是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,具有以下特点:

  • 从浏览器中创建XMLHttpRequest
  • 从 node.js 发出http请求。
  • 支持 Promise API
  • 拦截请求响应
  • 转换请求响应数据
  • 取消http请求。
  • 自动转换JSON数据。
  • 客户端支持防止 CSRF/XSRF(跨站请求伪造)

  看到这里发现axios的作用是不是和Ajax很相似。

简单说一一下他们两个的区别,下面会举例说明。
区别axios是通过Promise实现对ajax技术的一种封装,就像jquery对ajax的封装一样。
    简单来说就是ajax技术实现了局部数据的刷新,axios实现了对ajax的封装,axios有的ajax都有,ajax有的axios不一定有,总结一句话就是axios是ajax,ajax不止axios

ajax请求格式:

$ajax({
	url:"请求路径",
	type:"请求方式",
	data:"请求参数",
	dataType:"响应数据类型JSON",
	success:function(result){
	//请求成功后回调函数。
	},
	error.function(result){
	//请求失败后的回调函数。
	}
})

axios请求格式:

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
//get提交方式
axios.get(请求地址?key=value&key2=value2).then(function(response){
	//请求成功后回调函数。
	},
	function(error){
	//请求失败后的回调函数。
})
//post提交方式
axios.post(请求地址,{key:value,key:value}).then(function(response){
	//请求成功后回调函数。
	},
	function(error){
	//请求失败后的回调函数。
})

2、开始第一个例子

通过axios请求获取随机笑话。
在这里插入图片描述

<div id="app">
    <button @click="getJoke">获取笑话</button>
    <br>
    <ul>
        <li v-for="item in jokes">
            {{item}}
        </li>
    </ul>
</div>
    var app = new Vue({
        el: "#app",
        data: {
            jokes: [],
            username: "",
            message: "",
        },
        methods: {
            getJoke() {
                var that = this;
                axios.get("https://autumnfish.cn/api/joke/list?num=3").then(function (resp) {
                    that.jokes = resp.data.jokes; //this:表示axios对象
                });
            },
        }
    })

测试结果:
在这里插入图片描述

2、案例二:天气查询

在这里插入图片描述

通过axios请求查询天气。

 <!-- 开发环境版本,包含了有帮助的命令行警告 -->
    <script src="./js/vue.js"></script>
    <!-- 官网提供的 axios 在线地址 -->
    <script src="./js/axios.min.js"></script>
    <!-- 自己的js -->
<div class="wrap" id="app">
      <div class="search_form">
<!--        <div class="logo"><img src="img/logo.png" alt="logo" /></div>-->
        <div class="form_group">
          <input
            type="text"
            v-model="city"
            class="input_txt"
            placeholder="请输入查询的天气"
            @keyup.enter="searchCity"
          />
          <button class="input_sub" @click="searchCity">
            搜 索
          </button>
        </div>
        <div class="hotkey">
          <a href="javascript:;" v-for="item in hotCitys" @click="checkHotCity(item)">{{item}}</a>
        </div>
      </div>
      <ul class="weather_list">
        <li v-for="w in weathers">
          <div class="info_type"><span class="iconfont">{{w.type}}</span></div>
          <div class="info_temp">
            <b>{{w.low}}</b>
            ~
            <b>{{w.high}}</b>
          </div>
          <div class="info_date"><span>{{w.date}}</span></div>
        </li>
      </ul>
    </div>
    <script>
        var app=new Vue({
             el:"#app",
             data:{
                 hotCitys:["郑州","襄阳","上海","商丘"],
                 city:"",
                 weathers:[],
             },
             methods:{
                  searchCity(){
                       axios.get(`http://wthrcdn.etouch.cn/weather_mini?city=${this.city}`).then(function(resp){
                           app.weathers=resp.data.data.forecast;
                       })
                  },
                  checkHotCity(hotCity){
                       this.city=hotCity;
                       this.searchCity();
                  }
             }
        })
    </script>

测试结果:
在这里插入图片描述

以上是关于Vue-axios的主要内容,如果未能解决你的问题,请参考以下文章

Vue-axios快速上手(转)

Vue-axios/resource

vue-axios

vue-axios

vue-axios设置公共的请求ip

Vue-axios拦截器401错误