背景インターフェイス ドメイン名はハードコードされておらず、動的に取得されます。具体的な実装は、静的な json ファイルを読み取って実際のインターフェース ドメイン名を設定することです。利点は、元のドメイン名がブロックされる可能性があるため、バックグラウンドで構成ファイルを直接変更できることです。それ以外の場合は、h5 プロジェクトは問題ないかもしれませんが、アプリを再リリースする必要があります。 コード// httpService.js は uni.request をカプセル化します。 データ要求の入り口では、まずドメイン名が取得され、つまりconfig.requestRemoteIpメソッドが実行されます。 '@/config' から設定をインポートします 'vue' から Vue をインポートします '@/service/cacheData.js' から cacheData をインポートします。 const MockUtil = () => import('@/libs/mockUtil.js') '@/libs/storage.js' からストレージをインポートします。 クラス HttpRequest { /** * インターフェースデータを読み取ります * @param options リクエスト情報 * @param noMock モックデータを全体として使用する場合、実際のデータをリクエストするための別のインターフェースを設定できます * @param cacheId * @returns {*} */ 非同期リクエスト解決(オプション、urlCustom = '', noMock = false, cacheId = null) { let remoteIP = await config.requestRemoteIp(); // インターフェースリクエストドメイン名を動的に設定する if (process.env.NODE_ENV === 'development' && config.isMockApi && !noMock) { this.getMockData(オプション) を返します } if (cacheId && cacheData[cacheId]) { this.testHttp(cacheData[cacheId]) を返します。 } 新しい Promise を返します ((resolve, reject) => { baseUrl を process.env.NODE_ENV === 'development' とします。config.baseUrl.dev : config.baseUrl.pro; options.url = baseUrl + options.url + `${urlCustom}`; ユニ.リクエスト( オブジェクト.assign({ 成功: (res) => { (res.statusCode != '200')の場合{ uni.showToast({ タイトル: 'サーバーエラー:' + res.statusCode、 アイコン:「なし」 }) 拒否する() } そうでない場合 (res.data.code == 10001) { ストレージ.removeToken(); Vue を新しい Vue() にします。 vue.$store.dispatch('ログアウト') vue.$routeUtil.reLaunch('main'); } そうでない場合 (res.data.code != 200) { (res.data.message)の場合{ uni.showToast({ アイコン: 'なし'、 タイトル: res.data.message }); } 拒否(res.data) } それ以外 { if (キャッシュID) { キャッシュデータ[キャッシュID] = res.data.data } 解決(res.data.data) } }, 失敗: エラー => { uni.showToast({ タイトル: 「サーバーエラー」 アイコン:「なし」 }) } }、オプション) ); }) } /** *モックデータは必要に応じてインポートされます* @param options * @returns {*} */ 非同期getMockData(オプション) { const モック = MockUtil() を待機します const MockUrl = Mock.default[options.url] if (typeof MockUrl !== 'function') { this.testHttp(MockUrl) を返します } if (options.method === 'post') { this.testHttp(MockUrl(options.data, false)) を返します } this.testHttp(MockUrl(options.params, true)) を返します } testHttp(データ) { pro = new Promise(function(resolve, reject) { とする setTimeout(関数() { 解決(データ) }, 50) }) リターンプロ } } デフォルトの新しい HttpRequest() をエクスポートします // config.js 定数設定 = { isMockApi: false、 // リクエスト URL: 'http://qiniu.eightyin.cn/teacherpath.json?time=' + Math.random().toString(36), リクエストURL: 'http://qiniu.eightyin.cn/teacherpathtest.json?time=' + Math.random().toString(36), ベースURL: { 開発者: ''、 プロ: '' }, 画像: { ossドメイン: '' }, uuid: Math.random().toString(36).substring(3, 20), リクエストリモートIP: () => { コンソールログ('config:', config) (config.RemoteIpInited) の場合 Promise.resolve() を返します。 新しい Promise を返します ((resolve, reject) => { uni.リクエスト({ URL: config.requestUrl、 成功: (応答) => { //todo テスト // config.baseUrl.pro = response.data.data.path; config.baseUrl.dev = 'http://bayin5.mycwgs.com/'; config.img.ossDomain = response.data.data.ossDomain; config.RemoteIpInited = true; 解決する() }, 失敗: () => { config.RemoteIpInited = true; 解決する() } }) }); } } デフォルト設定をエクスポート 上記は、uniapp がインターフェイスドメイン名を動的に取得する方法の詳細な分析です。uniapp がインターフェイスドメイン名を動的に取得する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)
>>: Zabbix 監視ソリューション - 最新の公式バージョン 4.4 [推奨]
序文WeChat アプレットを開発する際には、ユーザーの権限が必要なページを使用する必要があることが...
AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...
目次1. Promiseとは何か2. 基本的な使い方3. Promiseメソッド3.1 Promis...
体の部位: <button>ライトのオン/オフを切り替える</button>...
質問: div+css と配置を使用して角丸四角形を実現するにはどうすればよいですか?ソリューション...
0x0 テスト環境本社本番サーバーと支社バックアップサーバーはリモートデータバックアップが必要です...
この記事では、Windows プラットフォームで ogg プログラムを監視する方法を紹介します。 (...
背景:サーバーがFlaskプロジェクトをデプロイし、python3をインストールしたため、再起動時に...
目次1. NanoIDがUUIDに取って代わる理由2. jsを生成する方法3. ナノID方式序文:ユ...
目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...
このプロジェクトでは、環境を構築するために Docker コンテナを使用します。Dockerfile...
突然、ドキュメントの保存と共同作業のためのプライベート サービスを構築する必要がありました。多くの場...
この記事では、MySQL 5.7.27 winx64のインストールと設定方法を参考までに紹介します。...
目次Linux の MariaDB データベースについて1. データベースとは何ですか? 2. デー...
Windows 環境と Linux 環境では結果が異なります。ウィンドウズステップ 1: Maven...