request.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { BASE_URL, TIMEOUT, DEFAULT_HEADERS } from './config'
  2. const request = (options = {}) => {
  3. return new Promise((resolve, reject) => {
  4. const token = uni.getStorageSync('token') || ''
  5. uni.request({
  6. url: BASE_URL + options.url,
  7. method: options.method || 'GET',
  8. data: options.data || {},
  9. header: {
  10. ...DEFAULT_HEADERS,
  11. 'Content-Type': 'application/json',
  12. 'Authorization': token ? `Bearer ${token}` : '',
  13. ...options.header
  14. },
  15. timeout: TIMEOUT,
  16. success: (res) => {
  17. if (res.statusCode !== 200) {
  18. uni.showToast({ title: '网络请求异常', icon: 'none' })
  19. return reject(res)
  20. }
  21. const { code, msg, data, total, rows } = res.data
  22. if (code === 200) {
  23. resolve(rows !== undefined ? { total, rows } : data)
  24. } else if (code === 401) {
  25. uni.removeStorageSync('token')
  26. uni.reLaunch({ url: '/pages/login/index' })
  27. reject(res.data)
  28. } else {
  29. uni.showToast({ title: msg || '操作失败', icon: 'none' })
  30. reject(res.data)
  31. }
  32. },
  33. fail: (err) => {
  34. uni.showToast({ title: '网络异常,请稍后重试', icon: 'none' })
  35. reject(err)
  36. }
  37. })
  38. })
  39. }
  40. export const get = (url, data, options = {}) => request({ ...options, url, data, method: 'GET' })
  41. export const post = (url, data, options = {}) => request({ ...options, url, data, method: 'POST' })
  42. export const put = (url, data, options = {}) => request({ ...options, url, data, method: 'PUT' })
  43. export const del = (url, data, options = {}) => request({ ...options, url, data, method: 'DELETE' })
  44. export default request