Vue中封装Axios网络请求

2 篇文章 0 订阅

Vue中封装Axios网络请求

前言

在写前后分离式系统的时候避免不了向后端请求数据,请求的地址不一样,需要得到的数据也不一样,就比如我们在页面加载的时候会需要一些后台的数据来渲染页面,我们需要访问一次后台,在我们点击添加或者删除按钮的时候还需要请求后台数据,这时候我们又要请求后台。传统的请求是这样的…

axios({
  method: 'post',
  url:后台地址+ '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

我们可以看出来我们每一次请求都需要加上后台地址,而且都需要加上method请求方式,这样对于我们开发来说也可以,但是想到如果后期后台端口或者地址改了,或者说请求的地址改了,我们不可能一个一个去该地址和端口吧,所以这就说到网络请求的封装了。直接上代码。

封装Axios网络请求

1、在我们的项目目录下执行这条命令,下载axios
npm install axios
2、在项目下创建utils目录,在utils下创建一个config.js文件

这里我们可以单独的把后台地址导出,在之后的修改和查看的情况下我们一目了然

export const BASE_URL= '后台地址'
3、在项目下创建utils目录,在utils下创建一个request.js文件
import axios from 'axios'; // 引入axios
axios.defaults.timeout = 10000;  
// 封装get方法和post方法
//axios.get()方法的第二个参数是一个{},这个对象的params属性值是一个参数对象
export function get(url, params){
  return new Promise((resolve, reject) =>{
    axios.get(url, {
      params: params
    }).then(res => {
      resolve(res.data);
    }).catch(err =>{
      reject(err.data)
    })
  });
}
//axios.post()方法的第二个参数是给后端串的一个json对象,后端应该使用@RequestPream来接收
export function post(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.post(url, data)
      .then(res => {
        resolve(res.data);
      })
      .catch(err =>{
        reject(err.data)
      })
  });
}

这里我也就封装了get、post请求,毕竟是常用请求就这两个。

4、在项目下创建utils目录,在utils下创建一个api.js文件

api.js下主要是封装了我们请求的方法,这里可以看到user,这个user就是向后台请求的参数,如果请求后台不需要参数我们可以为空像这样:

select: () => post(BASE_URL + '/edit/selectMarkdown'),

这里edit接收的可以是一个或多个,但是在封装的方法中我们只需要写一个参数就行

导入我们创建的get、和post方法

import {get,post} from './request';
import {BASE_URL} from "./config";
export const HttpManager = {
  addEdit: (edit) => post(BASE_URL + '/edit/add', edit),
}
5、页面中使用封装好的请求

下面这段代码就是无参的请求方式,我们可以看到没有参数我们圆括号中什么都没写直接去.then的。

HttpManager.selectBlog().then(res=>{
        for (let i=0;i<res.data.length;i++){
          this.tableData.push(res.data[i])
        }
      }).catch(err=>{
        console.log(err);
      })

我就以添加为例,这样大家也可以看的清除,这里可以看到花括号里的就是后台接收的参数。

HttpManager.addEdit({
            blog_title : formName.title,
            blog_explain : formName.explain,
            markdown_content : that.blogInfo.blogContent,
            create_date : create_date,
            classify_id : formName.classify,
            watch_count : 0,
            tags : null
          }).then(res=>{
            this.$message({
              message: '发布成功',
              type: 'success'
            });
            this.$router.push('/SystemCount')
          }).catch(err=>{

          })

结语

相信大家也看明白了,最后祝大家学习进步,工作顺利啦。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值