ZeXu_
侠客
侠客
  • 最后登录2020-10-29
  • 发帖数12
阅读:4727回复:0

[vue]# 前后端分离 7:前端 续3 抽出相同部分→复用

楼主#
更多 发布于:2020-08-11 18:28


前后端分离 7:前端 续3 调整 API.js

Author: ZeXu
Soft: WebStorm


续接 # 前后端分离 3:前端 API.js

在做数据新增的时候需要用到一个新的接口来做新增
发现get、post之间就有 aixos.get/post 的区别,而且后面还会用到 put 和 delete
就尝试着将其公共部分抽出(changeAxios),当时就抽出来后,就害怕不能成功,因为还是我弄不明白 异步和同步
但是还好,抽出来后,调用接口,其实并没有发生什么,是我多想了~~~

``` javascript // # api.js import axios from 'axios' import to from 'await-to-js' function API () { // get 获取 let get = (url, params) => { if (params) { let keys = Object.keys(params)
      url = url + '?' for (let i = 0; i < keys.length; i++) { if (['[object Object]', '[object Array]'].some(item => Object.prototype.toString.call(params[keys]) === item)) {
          params[keys] = JSON.stringify(params[keys])
        }
        url = url + keys + '=' + params[keys] + (i === keys.length - 1 ? '' : '&')
      }
    } return to(new Promise((resolve, reject) => {
      changeAxios(axios.get, url, params, resolve, reject)
    }))
  } // post 增加 let post = (url, params) => { return to(new Promise((resolve, reject) => {
      changeAxios(axios.post, url, params, resolve, reject)
    }))
  } // put 编辑 // delete 删除 let changeAxios = (reqMethod, url, params, resolve, reject) => {
    reqMethod(url, params).then((response) => {
      resolve(response.data)
    }).catch((error) => {
      reject(error)
    })
  } this.product = {
    getMethod (params) { return get('/product', params)
    },

    postMethod () { return post('/product', {name: 123, pwd: '456', value: ['q', 'w', 'e', 'r']})
    }
  } this.news = {
    query (params) { return get('/company/news/queryNews', params)
    },

    add (params) { return post('/company/news/addNews', params)
    }
  }
} export default new API() ```
游客


返回顶部

公众号

公众号