|
|
@@ -37,29 +37,52 @@ const taroFetch: typeof fetch = async (input, init) => {
|
|
|
try {
|
|
|
const response = await Taro.request(options)
|
|
|
|
|
|
- // 处理401未授权
|
|
|
- if (response.statusCode === 401) {
|
|
|
- Taro.removeStorageSync('token')
|
|
|
- Taro.removeStorageSync('userInfo')
|
|
|
- Taro.navigateTo({ url: '/pages/login/index' })
|
|
|
- throw new Error('请重新登录')
|
|
|
- }
|
|
|
+ // // 处理401未授权
|
|
|
+ // if (response.statusCode === 401) {
|
|
|
+ // Taro.removeStorageSync('token')
|
|
|
+ // Taro.removeStorageSync('userInfo')
|
|
|
+ // Taro.navigateTo({ url: '/pages/login/index' })
|
|
|
+ // throw new Error('请重新登录')
|
|
|
+ // }
|
|
|
|
|
|
// 适配fetch响应格式
|
|
|
- return {
|
|
|
- ok: response.statusCode >= 200 && response.statusCode < 300,
|
|
|
- status: response.statusCode,
|
|
|
- statusText: response.errMsg || 'OK',
|
|
|
- headers: new Headers(response.header || {}),
|
|
|
- url: response.data?.url || url,
|
|
|
- json: async () => response.data,
|
|
|
- text: async () => JSON.stringify(response.data),
|
|
|
- blob: async () => new Blob([JSON.stringify(response.data)]),
|
|
|
- arrayBuffer: async () => new TextEncoder().encode(JSON.stringify(response.data)),
|
|
|
- clone: () => ({}) as Response,
|
|
|
- body: null as any,
|
|
|
- bodyUsed: true
|
|
|
- } as Response
|
|
|
+ // return {
|
|
|
+ // ok: response.statusCode >= 200 && response.statusCode < 300,
|
|
|
+ // status: response.statusCode,
|
|
|
+ // statusText: response.errMsg || 'OK',
|
|
|
+ // headers: new Headers(response.header || {}),
|
|
|
+ // url: response.data?.url || url,
|
|
|
+ // json: async () => response.data,
|
|
|
+ // text: async () => JSON.stringify(response.data),
|
|
|
+ // blob: async () => new Blob([JSON.stringify(response.data)]),
|
|
|
+ // arrayBuffer: async () => new TextEncoder().encode(JSON.stringify(response.data)),
|
|
|
+ // clone: () => ({}) as Response,
|
|
|
+ // body: null as any,
|
|
|
+ // bodyUsed: true
|
|
|
+ // } as Response
|
|
|
+
|
|
|
+ const responseHeaders = new Headers();
|
|
|
+ if (response.header) {
|
|
|
+ for (const [key, value] of Object.entries(response.header)) {
|
|
|
+ responseHeaders.set(key, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理204 No Content响应,不设置body
|
|
|
+ const body = response.statusCode === 204
|
|
|
+ ? null
|
|
|
+ : responseHeaders.get('content-type')?.includes('application/json')
|
|
|
+ ? JSON.stringify(response.data)
|
|
|
+ : response.data;
|
|
|
+
|
|
|
+ return new Response(
|
|
|
+ body,
|
|
|
+ {
|
|
|
+ status: response.statusCode,
|
|
|
+ statusText: response.errMsg || 'OK',
|
|
|
+ headers: responseHeaders
|
|
|
+ }
|
|
|
+ )
|
|
|
} catch (error) {
|
|
|
console.error('API Error:', error)
|
|
|
Taro.showToast({
|