背景インターフェイス ドメイン名はハードコードされておらず、動的に取得されます。具体的な実装は、静的な 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 [推奨]
背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...
最近、MySQL の起動中にエラーが発生しました。エラー メッセージは次のとおりです。 エラー 20...
目次1. はじめに2. 環境とツール3. Dockerをインストールし、リモート接続を構成する4. ...
<br />1998年に最初の個人ページが誕生してから2008年の今日まで、デザイン業界...
最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...
要約すると: Readonly は入力 (テキスト/パスワード) とテキスト領域に対してのみ有効です...
プロキシを有効にする2つの方法React には、直接使用できるカプセル化された Ajax リクエスト...
背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...
1. 成果を達成する 2. バックエンドから返されるデータ形式 「リスト」: [ { "i...
1. 基本環境1. オペレーティングシステム: CentOS 7.3 2. MySQL: 8.0.1...
MySQL 5.5.56無料インストール版の設定方法をテキストコードで詳しく説明します。具体的な内容...
方法1: .bashrcまたは.bash_profileファイルを変更するこれは、ホーム ディレクト...
ドロップダウンメニューを書くには、ボタンをクリックします。メニューの入り口はアイコンボタンをクリック...
目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...
成果を達成する 実装コードhtml <div id=コンテナ> いらっしゃいませ <...