欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

axios发送请求篇

程序员文章站 2022-01-09 09:50:48
vue发送请求使用 axiosvue发送请求在 ES5 中, 我们使用 vue-routerce 发送异步请求,​ 但是在 ES6 中, 作者不再维护 vue - resource。建议我们使用 axios 发送请求。​vue 家族插件 使用 vue.use 方法来安装。vue家族插件: vue, vuex, vue-router, vue-resource2.1 使用axios​axios 的使用非常简单,就想jQuery 一样。直接调用简便方法。get (url , co...

vue发送请求使用 axios

vue发送请求在 ES5 中, 我们使用 vue-routerce 发送异步请求,

​ 但是在 ES6 中, 作者不再维护 vue - resource。建议我们使用 axios 发送请求。

  • vue 家族插件 使用 vue.use 方法来安装。
  • vue家族插件: vue, vuex, vue-router, vue-resource

2.1 使用axios

axios 的使用非常简单,就想 jQuery 一样。直接调用简便方法。
  • get (url , config ) 发送 get 请求。

    • url : 请求地址

    • config 表示配置项

      • parmas,headers 等
  • post(url, data, config) 发送 post 请求

    • url 表示请求地址
    • data 表示携带的数据
    • config 表示配置项
      • parmas,headers 等
监听错误

​ axios实现了 promise 规范, 因此 then方法监听成功,catch方法监听失败。

  • 通过 then 方法监听结果

    • 第一个参数表示成功时候的回调函数
      • 参数表示请求对象,其中 data 属性表示返回的数据
      • 当多次使用 then 方法的时候,前一个 then 方法的返回值,将作为后一个 then 方法的参数。
    • 第二个参数表示失败时候的回调函数
  • 通过 catch 方法监听失败

注意点:

不论是 get 请求还是 post 请求,都可以携带 query 数据

query 数据可以在两个位置添加

  • 在 url 上添加 query 数据
  • 在 config 配置中的 params 属性中传递。
  • axios 提交的数据,默认使用的是 json 格式。
  • 我们可以通过修改 headers 中的 Content-Type 字段,来模拟表单提交。
    • 模拟表单: application/x-www-form-urlencoded

示例代码:

// 引入vue
import Vue from 'vue';
// 引入axios
import axios from 'axios';

// 安装
// Vue.prototype.$ickt = axios;
// 语义化
Vue.prototype.$http = axios;

// 组件类
let Home = Vue.extend({
    // 模板
    template: `
        <div>
            <h1>home page -- {{msg}}</h1>
        </div>
    `,
    // 数据
    data() {
        return {
            msg: ''
        }
    },
    // 组件创建完
    created() {
        console.log('home', this)
        // 发送请求
        // axios.get('/data/demo.json?color=red', {
        //     params: {
        //         num: 10
        //     }
        // })
        
        this.$http.post('/data/demo.json?color=green', {
            msg: 'hello'
        }, {
            // query数据
            params: {
                num: 20
            },
            // 修改请求头
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            }
        })
            // 监听结果
            // .then(res => console.log('success', res))
            .then(({ data }) => {
                // 存储数据
                this.msg = data.title
            })
            // 多次订阅then方法
            // .then(res => {
            //     console.log(123, res)
            //     return { num: 100 }
            // })
            // .then(
            //     // 成功
            //     res => console.log('success', res),
            //     // 失败
            //     err => console.log('error', err)
            // )
            // 失败
            // .catch(err => console.log('error', err))
    }
})
// console.log(123123123)

// 创建应用
let app = new Vue({
    // 容器元素
    el: '#app',
    // 注册组件
    components: { Home },
    // 数据
    data: {},
    // 创建完
    created() {
        console.log('app', this)
    }
})

本文地址:https://blog.csdn.net/qq_35898059/article/details/108151686

相关标签: vue