| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import before from '@/utils/api/web/request/before'
- import afterReturning from './afterReturning'
- import afterThrowing from './afterThrowing'
- // #ifdef H5
- import axios, { AxiosStatic, AxiosRequestConfig, AxiosResponse } from 'axios'
- // #endif
- // let axios: AxiosStatic = null
- // if (config.common.isH5) {
- // const Axios = await import('axios')
- // axios = Axios.default
- // }
- const setRequestResult = ({ options, resolve, reject }) => {
- const rv = {
- // 响应成功
- success(res) {
- if (options.urlObj.isUpload) {
- res.data = JSON.parse(res.data)
- }
- resolve(res)
- },
- // 响应失败
- fail(err) {
- const rejectInfo = afterThrowing.main({
- options,
- errInfo: err as UniApp.RequestSuccessCallbackResult,
- errType: enums.ErrorType.net,
- })
- reject(rejectInfo)
- },
- }
- options.uur.success = rv.success
- options.uur.fail = rv.fail
- }
- const http = async <T>(options: IRequestOption) => {
- if (store.common.data.mockScenes) {
- const curMocks = mock.request
- const curMock = curMocks[store.common.data.mockScenes][options.urlObj.name]
- if (curMock) {
- // store.webapi[options.urlObj.group][options.urlObj.name].set(enums.ReqState.success)
- return curMock.data
- }
- }
- if (options.urlObj.isUpload) {
- options.ext.choosFiles = await func.native.choose({ count: options.ext.fileCount })
- }
- await before.main(options)
- // 1. 返回 Promise 对象
- return new Promise<any>((resolve, reject) => {
- setRequestResult({ options, resolve, reject })
- if (options.urlObj.isUpload) {
- uni.uploadFile(options.uur as UniApp.UploadFileOption)
- } else {
- // #ifdef H5
- axios<any, UniApp.RequestSuccessCallbackResult & AxiosResponse>({
- ...options.uur,
- headers: options.uur.header,
- } as AxiosRequestConfig<any>)
- .then((res) => {
- res.statusCode = res.status
- options.uur.success(res)
- })
- .catch(options.uur.fail)
- // #endif
- // #ifndef H5
- uni.request(options.uur as UniApp.RequestOptions)
- // #endif
- }
- }).then((res) => {
- // 接口请求正常
- if (res.statusCode === 200) {
- // 业务逻辑正确
- if (res.data.code === 0) {
- return afterReturning.main({ options, res: res.data })
- } else {
- return afterThrowing.main({ options, res: res.data, errType: enums.ErrorType.business })
- }
- } else {
- return afterThrowing.main({ options, errInfo: res, errType: enums.ErrorType.net })
- }
- })
- }
- /**
- * GET 请求
- * @param url 后台地址
- * @param query 请求query参数
- * @returns
- */
- const httpGet = <T>(options: IRequestOption) => {
- options.uur.method = 'GET'
- return http<T>(options)
- }
- const httpPost = <T>(options: IRequestOption) => {
- options.uur.method = 'POST'
- return http<T>(options)
- }
- export default {
- http,
- get: httpGet,
- post: httpPost,
- }
|