request.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. return reject(res.data?.msg || res.data?.message || '网络请求异常')
  22. }
  23. const { code, msg, data, total, rows } = res.data
  24. if (code === 200) {
  25. resolve(rows !== undefined ? { total, rows } : data)
  26. } else if (code === 401) {
  27. uni.removeStorageSync('token')
  28. uni.reLaunch({ url: '/pages/login/index' })
  29. reject(msg || '未登录,请重新登录')
  30. } else {
  31. reject(msg || '操作失败')
  32. }
  33. },
  34. fail: (err) => {
  35. reject(err?.errMsg || err?.message || '网络异常,请稍后重试')
  36. }
  37. })
  38. })
  39. }
  40. export { request }