Axios使用

一、axios是什么?

axios 是功能强大的网络请求库,基于promise的http库,可以发送get、post请求,也是Vue,React的出现促使axios轻量级库的出现。

二、在项目中安装axios库

打开项目目录,在终端中输入

npm install axios -S

之后等待安装完成即可

三、GET请求

  • 请求模板
import axios from 'axios'  //引入axios

axios.get('接口地址', {params: {参数一:'值' ,参数二:'值', ...})
  .then(res => {
     /*
         res.data 为后端接口返回的json数据
     */
     console.log(res.data)  //控制台输出后端json数据
  })
  .catch(err => {
     console.log(err)  //控制台输出异常
  })
  • 请求示例

例如,我想通过GET请求获取接口 http://localhost:8080/api/getUserList?method=limit&start=0&end=10 中的数据,我可以这样写:

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

export default {
  data() {
    return {
      tableData:[]
    }
  },
  methods: {
    getUserList() {
      axios.get('http://localhost:8080/api/getUserList', {params: {method:'limit' , start:'0', end:'10'})
        .then(res => {
           this.tableData = res.data  //将后端返回的json对象储存至tableData这个数组中
           console.log(res.data);  //控制台输出后端json数据
        })
        .catch(err => {
           console.log(err);  //控制台输出异常
        })
      }
    }
  },
  create() {
    this.getUserList();
  }
}

上述代码中,params为参数选项,按需求选择,非必须

params中的参数是添加到url的请求字符串中的,用于GET请求

四、POST请求

  • 请求模板
import axios from 'axios'  //引入axios
axios.post('接口地址', {data: {参数一:'值' ,参数二:'值', ...})
  .then(res => {
     /*
         res.data 为后端接口返回的json数据
     */
     console.log(res.data)  //控制台输出后端json数据
  })
  .catch(err => {
     console.log(err)  //控制台输出异常
  })
  • 请求示例

例如,我想通过POST请求,将数据发送到接口 http://localhost:8080/api/setUserData 中,我可以这样写:

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

export default {
  data() {
    return {
      formData:{
        name: '李锦成',
        gender: '男',
        age: '19'
      }
    }
  },
  methods: {
    setUserData() {
      axios.post('http://localhost:8080/api/getUserList', {data: formData})
        .then(res => {
           if(res.data.code === 200) { //从后端返回的结果中读取状态码(code),后端以状态码为200为成功(根据接口而定)
             this.$message.success('操作成功');
           } else {
             this.$message.error(res.data.msg);
           }
        })
        .catch(err => {
           console.log(err);  //控制台输出异常
        })
      }
    }
  } //组件调用:@click="setUserData"
}

五、通用请求

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

axios({
  method: '请求方式', // 填get或post
  url: '接口地址',

  params: {json格式的参数}, // 若为get请求则使用params
  data: {json格式的数据}, // 若为post请求则使用data
  headers: { //请求头,默认是Content-Type: application/json
    'Content-Type': 'Content-Type: application/json'
  }
})
  .then(res => {
    console.log(res)  //控制台输出后端json数据
  })
  .catch(err => {
    console.log(err)  //控制台输出异常
  })

关于headers

① ‘Content-Type: application/json ‘:是默认的格式。请求体中的数据会以json字符串的形式发送到后端。

② ‘Content-Type: application/x-www-form-urlencoded’:请求体中的数据会以普通表单形式(键值对)发送到后端。

③ ‘Content-Type: multipart/form-data’:它会将请求体的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。

上一篇
下一篇