uniappリクエストのカプセル化
モバイル アプリケーションの急速な開発に伴い、フロントエンド フレームワークはますます多様化しています。中でも uniapp は、Vue.js をベースとしたクロスプラットフォーム開発フレームワークとして、モバイル アプリケーション開発での使用が増えています。
フロントエンド開発者として、uniapp を開発するとき、データ対話のために多くの API またはサーバー インターフェイスを使用することがよくあります。データ要求プロセスでは、コードの可読性と保守性を確保しながら、ネットワーク通信、データ形式、データのセキュリティなどの問題を考慮する必要があります。これらの問題に対処するには、API リクエストをカプセル化して、コードの可読性と保守性を向上させることができます。
uniapp のリクエストのカプセル化を紹介しましょう。
1. ネットワーク リクエスト
uniapp でネットワーク リクエストを送信するには、uni.request() を使用する必要があります。この関数は非同期関数であり、Promise を使用してカプセル化する必要があります。以下は簡単なカプセル化の例です。
export function request(method, url, data = {}) { return new Promise((resolve, reject) => { uni.request({ method, url, data, header: { 'content-type': 'application/json', }, success: (res) => { if (res.statusCode === 200) { resolve(res.data); } else { reject(new Error(res.statusCode)); } }, fail: (err) => { reject(err); }, }); }); }
このカプセル化関数では、リクエスト メソッド、リクエスト URL、およびリクエスト データを渡す必要があります。さらに、この関数はリクエスト ヘッダー、リクエストの成功と失敗のコールバック関数も定義します。
2. 統合されたエラー処理
リクエストをカプセル化するプロセスでは、リクエスト内のエラー処理を考慮する必要があります。エラー処理プロセスでは、エラーコードを統一的に処理することでコードの保守性を向上させることができます。以下は、一般的なエラー コード処理の例です。
export function request(method, url, data = {}) { return new Promise((resolve, reject) => { uni.request({ method, url, data, header: { 'content-type': 'application/json', }, success: (res) => { if (res.statusCode === 200) { resolve(res.data); } else { reject(new Error(res.statusCode)); } }, fail: (err) => { let errorMessage = ''; if (err.errMsg.includes('timeout')) { errorMessage = '请求超时,请稍后重试!'; } else if (err.errMsg.includes('abort')) { errorMessage = '请求数据错误,请重试!'; } else { errorMessage = '网络请求错误,请检查网络连接!'; } reject(new Error(errorMessage)); }, }); }); }
このカプセル化された関数では、さまざまなタイプのエラー コードを判断して、さまざまなエラー プロンプト メッセージを定義します。このアプローチにより、コードの保守が容易になります。
3. リクエストの構成
頻繁に使用される API インターフェイスについては、よりきめ細かい方法でリクエストをカプセル化できます。リクエストを送信するプロセス中に、リクエストのさまざまなオプションとパラメータを定義して、より柔軟で効率的なリクエストを実現できます。
以下はリクエスト構成の例です:
const requestConfig = { baseUrl: 'https://example.com', timeout: 5 * 1000, headers: { 'Accept-Language': 'zh-CN', }, }; export function request(method, url, data = {}, config = {}) { const { baseUrl = '', timeout = 0, headers = {}, } = { ...requestConfig, ...config }; return new Promise((resolve, reject) => { uni.request({ method, url: `${baseUrl}${url}`, data, header: { ...headers, 'content-type': 'application/json', }, timeout, success: (res) => { if (res.statusCode === 200) { resolve(res.data); } else { reject(new Error(res.statusCode)); } }, fail: (err) => { let errorMessage = ''; if (err.errMsg.includes('timeout')) { errorMessage = '请求超时,请稍后重试!'; } else if (err.errMsg.includes('abort')) { errorMessage = '请求数据错误,请重试!'; } else { errorMessage = '网络请求错误,请检查网络连接!'; } reject(new Error(errorMessage)); }, }); }); }
このカプセル化関数では、ベース URL、リクエスト タイムアウト、およびリクエスト ヘッダーを定義します。関数を呼び出すと、渡された外部パラメーターは要件に従ってマージされ、より柔軟な要求構成を実現するために Accept-Language パラメーターが要求ヘッダーに追加されます。
4. リクエスト インターセプタ
複雑なアプリケーションでは、リクエストをインターセプトする必要がある場合があります。たとえば、リクエストごとに、送信前にトークン検証情報をリクエスト ヘッダーに追加する必要があります。
以下はリクエスト インターセプターの例です:
const requestConfig = { baseUrl: 'https://example.com', timeout: 5 * 1000, headers: { 'Accept-Language': 'zh-CN', }, }; export function request(method, url, data = {}, config = {}) { const { baseUrl = '', timeout = 0, headers = {}, } = { ...requestConfig, ...config }; uni.addInterceptor('request', (options) => { options.header['token'] = uni.getStorageSync('token'); return options; }); return new Promise((resolve, reject) => { uni.request({ method, url: `${baseUrl}${url}`, data, header: { ...headers, 'content-type': 'application/json', }, timeout, success: (res) => { if (res.statusCode === 200) { resolve(res.data); } else { reject(new Error(res.statusCode)); } }, fail: (err) => { let errorMessage = ''; if (err.errMsg.includes('timeout')) { errorMessage = '请求超时,请稍后重试!'; } else if (err.errMsg.includes('abort')) { errorMessage = '请求数据错误,请重试!'; } else { errorMessage = '网络请求错误,请检查网络连接!'; } reject(new Error(errorMessage)); }, }); }); }
このカプセル化関数では、uni.addInterceptor() 関数を使用してトークン検証情報をリクエストに追加します。このようなカプセル化方式により、各リクエストを一元的に管理・処理することが可能となる。
概要
フロントエンド開発者として、コードの可読性と保守性は常に不可欠な問題です。 uniapp では、コードの再利用性とコードの可読性を可能な限り向上させるために API リクエストをカプセル化することでこの目標を達成する必要があります。同時に、リクエストのパッケージ化においても、プロジェクトごとの実際のニーズに応じてパッケージ化方法を最適化し、リクエスト業務の効率化を実現します。
以上がuniappリクエストのカプセル化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









記事では、UNI-APPでSASSおよびPREPROCESSORSを使用して、セットアップ、利点、および二重使用法を詳細に使用することについて説明します。主な焦点は構成と利点にあります。[159文字]

この記事では、ユニット、統合、機能、UI/UX、パフォーマンス、クロスプラットフォーム、セキュリティテストなど、UNIAPPアプリケーションのさまざまなテストタイプについて説明します。また、クロスプラットフォームの互換性を確保し、JESのようなツールを推奨しています

この記事では、Uni-AppのアニメーションAPIの使用方法、アニメーション、キー関数、およびアニメーションのタイミングを結合および制御する方法を作成および適用する手順を詳細に説明します。

この記事では、コードの最適化、リソース管理、コード分割や怠zyなロードなどの手法に焦点を当てたUniappパッケージサイズを削減する戦略について説明します。

この記事では、Hbuilderx、Wechat開発者ツール、Chrome Devtoolsなどのツールに焦点を当てたUniapp開発のためのデバッグツールとベストプラクティスについて説明します。

この記事は、Uni-APPプロジェクトのファイル構造を詳しく説明し、一般的な、コンポーネント、ページ、静的、ユニクロードなどの主要なディレクトリ、およびapp.vue、main.js、manifest.json、pages.json、uni.scssなどの重要なファイルを説明します。これがどのようにoです

この記事では、ローカルデータ管理のためにUni-AppのストレージAPI(uni.setstorage、uni.getStorage)を使用する方法について説明し、ベストプラクティス、トラブルシューティング、および効果的な使用のための制限と考慮事項について説明します。

この記事では、UNI-APPのAPIを使用して、許可設定やエラー処理など、カメラやジオロケーションなどのデバイス機能にアクセスします。
