axios封装

147 阅读1分钟

axios封装

import axios from "axios";
var instance = axios.create({
    baseURL: 'https://lianghj.top:8888/api/private/v1/',
});

instance.interceptors.request.use(
    config => {
        // 每次发送请求之前判断是否存在token
        // 如果存在,则统一在http请求的header都加上token,
        // 这样后台根据token判断你的登录情况,此处token一般是用户完成登录后储存到localstorage里的
        localStorage.token && (config.headers.Authorization = localStorage.token)
        return config
    },
    error => {
        return Promise.error(error)
    })
// 形参采用'对象解构赋值的形式'为其添加默认值
export const http = ({ path, params = {},method = "get",data = {} }={}) => {
    return new Promise((resolve, reject) => {
        instance({
            url: path,
            method, 
            data,
            params
        })
            .then((res) => {
                resolve(res)
            })
            .catch((err) => {
                reject(err)
            })
    })
}

##
import {http} from '@/http/http'
// 获取表格信息http
export const getTable = (path,params) => http({path,params})
// 增加用户http
export const addUser = ({ path="",data={}}) => http({path,method:'post',data}) 
// 删除用户
export const delUser = (path)=> http({path,method:"delete"})

后台项目搜索功能

<el-row>
      <el-button @click="drawer = true">添加用户</el-button>
      // 绑定下输入的username
      <el-input style="width: 300px" v-model="username"></el-input>
      <el-button @click="search">搜索</el-button>
    </el-row>
    
 #js   
  search() {
      // 还是采用获取用户信息请求,只是将其携带的参数添加query:id
      this.getTableData();
    }
  
   getTableData() {
      getTable("users", {
        pagenum: this.currentChange,
        pagesize: this.SizeChange,
        // 增加查询参数
        query: this.username,
      }).then((res) => {
        console.log("res", res);
        let { meta, data } = res.data;
        if (meta.status == 200) {
          this.tableData = data.users;
          this.total = data.total;
        } else {
          this.$message.error(meta.msg);
        }
      });
    },
  },

后台项目用户删除

      <el-table-column fixed="right" label="操作" width="100">
        <template slot-scope="scope">
          // 采用作用域插槽获取整行数据 
          <el-button @click="handleClick(scope.row)" type="text" size="small"
            >查看</el-button
          >
          <el-button
            type="text"
            size="small"
            @click="del(scope.row)"
            v-model="delId"
            >删除</el-button
          >
        </template>
      </el-table-column>
//发送请求
del(row) {
      console.log(row.id);
      delUser("users/" + row.id)
        .then((res) => {
          let {meta:{status,msg}} = res.data
          if(status==200){
            this.$message.success(msg)
            this.getTableData()
          }else{
            this.$message.error(msg)
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },

keep alive

针对不想每次路由跳转后重新获取数据刷新组件

为不想每次路由跳转后重新获取数据的组件的路由的`Meta`属性添加 keepAlive:true
meta:{title:"用户管理",menutitle:"用户列表", keepAlive: true,},
通过判断开启KeePAlive
<keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if=" !$route.meta.keepAlive”></router-view>