http.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /**
  2. * author 赵越
  3. * 2018-11-04
  4. */
  5. import axios from 'axios'
  6. import Vue from 'vue'
  7. /**
  8. *
  9. * @param {string} path 请求地址的 path
  10. * @param {string} data 请求实体
  11. * @param {object} payload 其他选项
  12. * @param {object} promise 返回一个 promise
  13. */
  14. const get = async (path, data, payload) => {
  15. let result = null
  16. await request('get', path, data, payload)
  17. .then(res => result = res)
  18. return result
  19. }
  20. /**
  21. *
  22. * @param {string} path 请求地址的 path
  23. * @param {string} data 请求实体
  24. * @param {object} payload 其他选项
  25. * @param {object} promise 返回一个 promise
  26. */
  27. const post = async (path, data = {}, payload) => {
  28. let result = null
  29. let formData = ''
  30. for(const key in data) {
  31. if(data.hasOwnProperty(key)) {
  32. const element = data[key]
  33. formData += `${key}=${element}&`
  34. }
  35. }
  36. formData = formData.slice(0, formData.length - 1)
  37. await request('post', path, formData, { config: { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } } })
  38. .then(res => result = res)
  39. return result
  40. }
  41. /**
  42. *
  43. * @param {method} method 请求方法
  44. * @param {string} path 请求地址的 path
  45. * @param {string} data 请求实体
  46. * @param {object} payload 其他选项
  47. * @param {object} promise 返回一个 promise
  48. */
  49. const request = async (method, path, data, payload = {}) => {
  50. let host = ''
  51. let url = host + path
  52. const body = {
  53. url,
  54. data,
  55. method,
  56. params: data,
  57. }
  58. if(payload.config) Object.assign(body, payload.config, { params: '' })
  59. console.log(`url: ${url}`)
  60. consoleFormat({ body })
  61. const res = await axios.request(body)
  62. let rData = res.data
  63. if(typeof rData !== 'object') rData = JSON.parse(rData)
  64. // consoleFormat({ rData })
  65. if(rData.status === 1) return rData
  66. if(rData.status === -99) {
  67. location.href = '/login'
  68. return
  69. } else {
  70. Vue.prototype.$message.error(rData.info)
  71. }
  72. }
  73. const consoleFormat = obj => {
  74. const key = Object.keys(obj)[0]
  75. console.log(key + ':')
  76. console.dir(obj[key])
  77. // console.log()
  78. }
  79. Vue.prototype.$get = get
  80. Vue.prototype.$post = post
  81. Vue.prototype.$request = request