index.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import before from '@/utils/api/web/request/before'
  2. import afterReturning from './afterReturning'
  3. import afterThrowing from './afterThrowing'
  4. const setRequestResult = ({ options, resolve, reject }) => {
  5. const rv = {
  6. // 响应成功
  7. success(res) {
  8. if (options.urlObj.isUpload) {
  9. res.data = JSON.parse(res.data)
  10. }
  11. resolve(res)
  12. },
  13. // 响应失败
  14. fail(err) {
  15. const rejectInfo = afterThrowing.main({
  16. options,
  17. errInfo: err as UniApp.RequestSuccessCallbackResult,
  18. errType: enums.ErrorType.net,
  19. })
  20. reject(rejectInfo)
  21. },
  22. }
  23. options.uur.success = rv.success
  24. options.uur.fail = rv.fail
  25. }
  26. const http = async <T>(options: IRequestOption) => {
  27. if (store.common.data.mockScenes) {
  28. const curMocks = mock.request
  29. const curMock = curMocks[store.common.data.mockScenes][options.urlObj.name]
  30. if (curMock) {
  31. // store.webapi[options.urlObj.group][options.urlObj.name].set(enums.ReqState.success)
  32. return curMock.data
  33. }
  34. }
  35. if (options.urlObj.isUpload) {
  36. options.ext.choosFiles = await func.native.choose({ count: options.ext.fileCount })
  37. }
  38. await before.main(options)
  39. // 1. 返回 Promise 对象
  40. return new Promise<any>((resolve, reject) => {
  41. setRequestResult({ options, resolve, reject })
  42. if (options.urlObj.isUpload) {
  43. uni.uploadFile(options.uur as UniApp.UploadFileOption)
  44. } else {
  45. uni.request(options.uur as UniApp.RequestOptions)
  46. }
  47. }).then((res) => {
  48. // 接口请求正常
  49. if (res.statusCode === 200) {
  50. // 业务逻辑正确
  51. if (res.data.code === 0) {
  52. return afterReturning.main({ options, res: res.data })
  53. } else {
  54. return afterThrowing.main({ options, res: res.data, errType: enums.ErrorType.business })
  55. }
  56. } else {
  57. return afterThrowing.main({ options, errInfo: res, errType: enums.ErrorType.net })
  58. }
  59. })
  60. }
  61. /**
  62. * GET 请求
  63. * @param url 后台地址
  64. * @param query 请求query参数
  65. * @returns
  66. */
  67. const httpGet = <T>(options: IRequestOption) => {
  68. options.uur.method = 'GET'
  69. return http<T>(options)
  70. }
  71. const httpPost = <T>(options: IRequestOption) => {
  72. options.uur.method = 'POST'
  73. return http<T>(options)
  74. }
  75. export default {
  76. http,
  77. get: httpGet,
  78. post: httpPost,
  79. }