request.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import Envs from "./envs"
  2. import store from '../store/store'
  3. const debug = process.env.NODE_ENV !== 'production'
  4. /// 环境对象
  5. class Env {
  6. static defaultEnv = debug ? Envs.dev : Envs.release
  7. static currentEnv() { return Object.values(Envs).find((e)=>e.index==store.state.selectedEnv) ?? Api.defaultEnv }
  8. }
  9. /// 公共请求处理
  10. const request = (config) => {
  11. const defaultHeader = {
  12. "content-type": "application/json"
  13. }
  14. config.url = Env.currentEnv().url + config.url
  15. if (!config.data) config.data = {}
  16. if (!config.method) config.method = 'GET'
  17. if (!config.header) config.header = defaultHeader
  18. if (config.url.indexOf('app_login') === -1) {
  19. config.header['token'] = store.state.userInfo.token
  20. }
  21. let promise = new Promise(function(resolve, reject) {
  22. uni.request(config).then(responses => {
  23. if (responses[0]) {
  24. reject({message : "网络超时"})
  25. } else {
  26. let response = responses[1].data // 如果返回的结果是data.data的,嫌麻烦可以用这个,return res,这样只返回一个data
  27. if (response.code != 200) {
  28. if (response.code == 401) {
  29. store.commit('clearUserInfo')
  30. uni.navigateTo({
  31. url:'../login/index',
  32. animationType:'fade-in'
  33. })
  34. }
  35. }
  36. resolve(response)
  37. }
  38. }).catch(error => {
  39. console.log(error)
  40. reject(error)
  41. })
  42. })
  43. return promise
  44. };
  45. export default request