Procházet zdrojové kódy

优化request/增加token失效后的处理

周杰伦 před 4 roky
rodič
revize
65f8ac9045
4 změnil soubory, kde provedl 394 přidání a 428 odebrání
  1. 338 381
      package-lock.json
  2. 1 1
      package.json
  3. 2 20
      src/pages/index/index.tsx
  4. 53 26
      src/service/request.ts

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 338 - 381
package-lock.json


+ 1 - 1
package.json

@@ -1,5 +1,5 @@
 {
-  "name": "agent-auth-react",
+  "name": "ggw",
   "version": "1.0.0",
   "private": true,
   "description": "",

+ 2 - 20
src/pages/index/index.tsx

@@ -9,32 +9,14 @@ import "taro-ui/dist/style/components/button.scss" // 按需引入
 
 import './index.scss'
 
-
-// eslint-disable-next-line import/first
-import NavBar from '@/components/NavBar/index'
-
-console.log(NavBar, 'NavBar');
-
-// eslint-disable-next-line import/first
-// import Tip from '@/utils/tip'
-
-// console.log(Tip);
-
-
-
 const Index: React.FC = () => { 
 
-  useEffect( () => {
-    // Tip.modal().then( res => {
-    //     console.log(res);
-    // })
-  }, [])
 
   return (
     <View className='index'>
-      <NavBar title='navbar' icon={<AtIcon value='chevron-left' size='20' color='#000'></AtIcon>} />
+     
 
-    </View>
+      </View>
   )
 
 }

+ 53 - 26
src/service/request.ts

@@ -16,40 +16,67 @@ type paramsType = {
 const errorHandle = (statusCode: number, code: number,  message: string, url: string) => {
     console.log(code, 'code');
     
-    if (statusCode !== 200) {
+    if (code === errorCode) {
+        // 请求很不错
+    } else if (code === 403) {
+
+    }
+    else if (statusCode !== 200) {
         Tip.toast('啊哦, 您的网络出了一点小问题')
-    } else if (code === 500) {
+        throw new Error(`${url} ---> 接口请求失败`)
+    }  else if (code !== errorCode) {
         Tip.toast(message)
-    } else if (code !== errorCode) {
-        Tip.toast('网络开了小差,刷新一下试试')
-        throw new Error(`${url}接口请求失败`)
+        throw new Error(`${url} ---> 接口请求失败`)
     }
 }
 
 // 请求
-export const request = async (params: paramsType) => {
+export const request = async (params: paramsType): Promise<any> => {
     const {baseUrl, url, method, data, header, timeout, responseType} = params
-    const result = await Taro.request({
-        url: baseUrl + url,
-        method: method || 'GET',
-        data,
-        header: {
-            'Content-Type': 'application/json',
-            ...header
-        },
-        timeout,
-        responseType
-    });
-    
-    // eslint-disable-next-line no-shadow
-    const { statusCode  } = result
-    const { message, data: Data } = result.data
-    console.log(Data);
-    
-    errorHandle (statusCode, result.data[errorKey], message, baseUrl + url)
+    return new Promise( async resolve => {
+        const result = await Taro.request({
+            url: baseUrl + url,
+            method: method || 'GET',
+            data,
+            header: {
+                'Content-Type': 'application/json',
+                token: Taro.getStorageSync('token'),
+                ...header
+            },
+            timeout,
+            responseType
+        });
+        
+        // eslint-disable-next-line no-shadow
+        const { statusCode  } = result
+        const { message, data: Data } = result.data
+        console.log(Data);
+        
+        errorHandle (statusCode, result.data[errorKey], message, baseUrl + url)
 
-    return Data
-    
+        if (result.data.status === 403) {
+            // token失效, 刷新token, 并重发请求
+            console.log('????');
+              Tip.loading()
+            //   Taro.login({
+            //       success: res => {
+            //           console.log(res);
+            //           const { code: Code } = res
+            //           reloadlogin(Code).then ( async _ => {
+            //               Taro.setStorageSync('token', _.id)
+                          
+            //           })
+            //       }
+            //   })
+
+              // resolve(await request(params))
+              Tip.loaded()
+  
+              return 
+          }
+
+          resolve(Data)
+    }).catch( e => e)    
 }
 
  

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů