美文网首页
十、Vue集成Axios

十、Vue集成Axios

作者: Epat | 来源:发表于2019-06-10 11:11 被阅读0次

    一、Axios介绍

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

    二、集成Axios

    1.在codesandbox上创建一个基于Vue的开发环境,并添加axios的依赖


    添加axios依赖
    1. 创建src/plugins文件夹,并增加axios.js文件,添加如下代码
    import axios from "axios";
    
    // 配置默认超时时间
    axios.defaults.timeout = 5000;
    
    axios.interceptors.request.use(
      function(config) {
        // 在发送请求之前做些什么
        return config;
      },
      function(error) {
        // 对请求错误做些什么
        return Promise.reject(error);
      }
    );
    
    // 添加响应拦截器
    axios.interceptors.response.use(
      function(response) {
        // 对响应数据做点什么
        return response;
      },
      function(error) {
        // 对响应错误做点什么
        return Promise.reject(error);
      }
    );
    
    export default axios;
    
    
    1. 在src/main.js文件中,导入axios
    import HttpTool from "./plugins/axios.js";
    Vue.prototype.HttpTool = HttpTool;
    
    1. 修改src/App.vue文件,添加获取纽约天气的http请求代码
    <template>
      <div id="app">
        <h1>纽约天气是:</h1>
        <div>温度:{{weather}}°C</div>
        <div>天气:{{temperature}}</div>
      </div>
    </template>
    
    <script>
    export default {
      name: "App",
      mounted() {
        this.fetchCityCode().then(key => {
          this.fetchJson(key);
        });
      },
      data() {
        return {
          weather: "",
          temperature: ""
        };
      },
      methods: {
        fetchCityCode() {
          return new Promise((resolve, reject) => {
            this.HttpTool.get(
              " https://apidev.accuweather.com/locations/v1/search",
              {
                params: {
                  q: "ny",
                  apikey: "hoArfRosT1215"
                }
              }
            )
              .then(re => {
                let data = re.data[0];
                let key = data.Key;
                resolve(key);
              })
              .catch(err => {
                reject(err);
              });
          });
        },
        fetchJson(key) {
          this.HttpTool.get(
            "https://apidev.accuweather.com/currentconditions/v1/" + key + ".json",
            {
              params: {
                apikey: "hoArfRosT1215",
                language: "zh"
              }
            }
          ).then(re => {
            let data = re.data[0];
            this.weather = data.Temperature.Metric.Value;
            this.temperature = data.WeatherText;
            console.log(re);
          });
        }
      }
    };
    </script>
    
    1. 可以看到右侧请求成功后显示的纽约的天气


      纽约天气

    Promise介绍
    es6入门Promise
    Axios看云
    codesandbox代码

    相关文章

      网友评论

          本文标题:十、Vue集成Axios

          本文链接:https://www.haomeiwen.com/subject/fkpaxctx.html