背景インターフェイス ドメイン名はハードコードされておらず、動的に取得されます。具体的な実装は、静的な 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 [推奨]
目次MySQLマスタースレーブの基本原理3つのbinlog形式の比較混合形式のバイナリログが存在する...
1. nginxを例に挙げるyumコマンドを使用してNginxをインストールしましたSystemd ...
1. ワニスの概要1. ワニスの紹介Varnish は、新しいソフトウェア アーキテクチャを使用し、...
新しいウィンドウが開きます。 利点: ユーザーがリンクをクリックしても、現在閲覧しているコンテンツは...
ピクセル解決通常、モニター解像度と呼ばれるものは、実際にはモニターの物理的な解像度ではなく、デスクト...
概要Prometheus は、HTTP プロトコルを介してリモート マシンからデータを収集し、ローカ...
目次setStateを使用する理由setStateの使用法非同期または同期更新要約するsetStat...
目次01-イベントバブリング1.1- イベントバブリングの概要1.2-イベントバブリングの利用(イベ...
目次序文1. 環境設定1.1 achartsをインストールする1.2 グローバル参照2. ドーナツチ...
この記事では、thinkphp5.1 + Vue+axiosを使用してファイルをアップロードする方法...
ステップ1: システムのアーキテクチャを確認する dpkg --print-architecture...
現在の日付を照会する CURRENT_DATE() を選択します。 CURDATE() を選択する;...
目次1. 開発環境2. dockerプラグインをインストールする1. アイデアのインストール2. イ...
フロントエンドとバックエンドを完全に分離する場合、Vue プロジェクトでトークン検証を実装する一般的...
Vueはブール値でストレージを保存します今日、問題に遭遇しました。バックグラウンドから返された真偽の...