美文网首页vue.js
Vue前端api封装(修改版)

Vue前端api封装(修改版)

作者: ai耳边的呢喃 | 来源:发表于2019-04-09 16:15 被阅读18次

    看评论说用markdown ,嗯。。被嫌弃了,我也觉得之前的排版好丑,重新写一次,顺便把put 和delete 方法加上

    一. 在src 目录下创建request 文件夹,然后在里面新建http.js和api.js文件,http.js 用于封装 axios,api.js用来统一管理我们的接口。

    安装 axios
    npm i axios --save
    
    http.js
    // 引入
    import axios from "axios"
    // 环境 
     axios.defaults.baseURL ='http://xxx.xxx.xxx:xxxx/';   //  要请求的后台地址
    // 请求超时
    axios.defaults.timeout =30000;
    //  post 请求头 
    axios.defaults.headers.post['Content-Type'] ='application/json';
    
    封装方法
    /**
        * get方法,对应get请求
        * @param {String} url [请求的url地址]
        * @param {Object} 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)
            })
        });
    }
    
    /**
    * post方法,对应post请求
    * @param {String} url [请求的url地址]
    * @param {Object} params [请求时携带的参数]
    */
    export function post(url, params) {
        return new Promise((resolve, reject) => {
            axios.post(url, params,).then(res => {
                resolve(res.data)
            }).catch(err => {
                reject(err.data)
            })
        });
    }
    
    /**
     * put方法,对应put请求
     * @param {String} url [请求的url地址]
     * @param {Object} params [请求时携带的参数]
     */
    export function put(url, params) {
      return new Promise((resolve, reject) => {
        axios.put(url, params,)
          .then(res => {
            resolve(res.data)
          })
          .catch(err => {
            reject(err.data)
          })
      });
    }
    
    /**
     * $delete,对应delete请求
     */
    export function $delete(url, params){
      return new Promise((resolve, reject) =>{
        axios.delete(url, {
          data: params
        })
          .then(res => {
            resolve(res.data)
          })
          .catch(err => {
            reject(err.data)
          })
      });
    }
    

    二,把接口统一写在api.js 中

    /**
     * api接口统一管理
     */
    import { post, $delete, put } from "./http";
    
    // 设备详情
    export const apiDeviceDetail = data => post("api/device/detail", data);
    // 修改设备
    export const apiUpdeteDevice = data => put("api/device", data);
    // 删除设备
    export const apiDelDevice = data => $delete("api/device", data);
    

    三,调用

    init() {     // 方法
      apiDeviceDetail({
        sid: this.id             // 需要传递的参数
      }).then(res => {
          console.log(res)
        })
    }
    

    相关文章

      网友评论

        本文标题:Vue前端api封装(修改版)

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