request.js 1.3 KB

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