From 99b052dca1da7d2723e6f7aa638c1a5883ff1845 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Thu, 09 Jun 2022 11:19:48 +0800
Subject: [PATCH] 完善主机地址管理工具

---
 bases/Fetcher.js |   36 +++++++++++++++++++-----------------
 1 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/bases/Fetcher.js b/bases/Fetcher.js
index cc10077..81e27e2 100644
--- a/bases/Fetcher.js
+++ b/bases/Fetcher.js
@@ -19,15 +19,6 @@
         this._data = {
             urlPrefix: options.urlPrefix || ['/api/common/', '/api/common/'],
         };
-        // mock 模式转换地址
-        if ($hostBoot.isOnMock()) {
-            this._defaultConfig.url += (project.host.assetsPath.indexOf('..') === 0 ? '/' : '') +
-                project.host.assetsPath.replace('/assets', '/mocks');
-        }
-        // 正常模式
-        else {
-            this._defaultConfig.url = '';
-        }
     }
 
     /**
@@ -141,23 +132,18 @@
             const header = {
                 ...this._defaultConfig.header,
             };
+            // 小程序中追加 cookie
             if (process.env.TARO_ENV === 'weapp') {
                 header['Cookie'] = this._getCookies();
-            }
-            // 如果指定了主机名,使用固定主机地址,否则使用默认地址
-            let urlPrefix = '';
-            if (options.hostName) {
-                urlPrefix = $hostBoot.getHost(options.hostName) + this._defaultConfig.url;
-            } else {
-                urlPrefix = $hostBoot.getHost() + this._defaultConfig.url;
             }
             Taro.request({
                 ...this._defaultConfig,
                 header,
-                url: urlPrefix + url,
+                url: this._createUrlPrefix(options) + url,
                 method: type.toUpperCase(),
                 data,
                 success: response => {
+                    // 小程序中保存 cookie
                     if (process.env.TARO_ENV === 'weapp') {
                         this._saveCookies(response.cookies);
                     }
@@ -184,6 +170,22 @@
         });
     }
 
+    _createUrlPrefix(options) {
+        // 如果指定了主机类,使用固定主机类型地址,否则使用默认主机类型地址
+        let urlPrefix = '';
+        if (options.hostType) {
+            urlPrefix = $hostBoot.getHost(options.hostType);
+        } else {
+            urlPrefix = $hostBoot.getHost();
+        }
+        // mock 模式转换地址
+        if ($hostBoot.isOnMock()) {
+            urlPrefix += (project.host.assetsPath.indexOf('..') === 0 ? '/' : '') +
+                project.host.assetsPath.replace('/assets', '/mocks');
+        }
+        return urlPrefix;
+    }
+
     // 小程序中,保存 cookies
     _saveCookies(cookies) {
         const localCookies = JSON.parse(Taro.getStorageSync('cookies') || '{}');

--
Gitblit v1.9.1