Axios をカプセル化する Vue は何に役立ちますか?
Vue で Axios をカプセル化すると、コードの品質が向上し、使用がより便利になります。 axios の API は非常に使いやすく、開発者はプロジェクト内で簡単に直接利用することができますが、プロジェクトの規模が大きくなると、HTTP リクエストを開始するたびにタイムアウトの設定やリクエストヘッダの設定、エラー処理など。この種の作業の重複は時間を無駄にするだけでなく、コードが冗長になり保守が困難になります。コードの品質を向上させるには、使用する前にプロジェクト内で axios を 2 回カプセル化する必要があります。これにより、より便利になります。使用します。
axios とは
axios は、HTTP リクエストを実行する XMLHttpRequest サービスに基づく軽量 HTTP クライアントです。豊富な構成、Promise のサポート、ブラウザ側と Node.js 側のサポート。 Vue2.0 以降、Youda は vue-resource の公式推奨を中止し、代わりに axios を推奨すると発表しました。現在、axios はほとんどの Vue 開発者にとって最初の選択肢となっています##なぜカプセル化するのか
API axios は非常に使いやすく、プロジェクトで直接簡単に使用できます。 しかし、プロジェクトの規模が大きくなると、HTTPリクエストを開始するたびに、タイムアウトの設定やリクエストヘッダの設定、リクエストアドレスに応じたリクエストアドレスの決定などの作業が必要になります。プロジェクト環境、エラー処理など。再度記述する必要があります。
この種の繰り返し作業は時間を無駄にするだけでなく、コードが冗長になり、保守が困難になります。コードの品質を向上させるには、プロジェクト内で axios を 2 回カプセル化し、
例:
axios('http://localhost:3000/data', { // 配置代码 method: 'GET', timeout: 1000, withCredentials: true, headers: { 'Content-Type': 'application/json', Authorization: 'xxx', }, transformRequest: [function (data, headers) { return data; }], // 其他请求配置...}).then((data) => { // todo: 真正业务逻辑代码 console.log(data);}, (err) => { // 错误处理代码 if (err.response.status === 401) { // handle authorization error } if (err.response.status === 403) { // handle server forbidden error } // 其他错误处理..... console.log(err);});
を使用する必要があります。各ページが同様のリクエストを送信する場合は、1 つを記述する必要があります。ヒープの設定とエラー処理が面倒すぎる
現時点では、使いやすくするために axios を再カプセル化する必要があります
カプセル化の方法
カプセル化中に、バックエンド、リクエスト ヘッダー、ステータス コード、リクエスト タイムアウトといくつかの取り決めをネゴシエートする必要があります...インターフェイス リクエストを設定しますプレフィックス: 開発に応じて、テスト環境と運用環境では、プレフィックスを区別する必要があります。
リクエスト ヘッダー: 特定のサービスを実装するには、リクエストを行う前にいくつかのパラメータを渡す必要があります (例: メンバーシップ サービス)
ステータス コード: インターフェイスから返されるさまざまなステータスに応じて、さまざまなサービスが実行されます。これはバックエンドと合意する必要があります。
リクエスト メソッド: get、post などのメソッドに従って再カプセル化します。
リクエスト インターセプター: リクエスト ヘッダーの設定に基づいて、どのリクエストにアクセスできるかを決定します。
レスポンス インターセプター: このブロックは、によって返されたステータス コードに基づいて、さまざまなサービスの実行を決定します。バックエンド`
インターフェイス リクエスト プレフィックスを設定しますノード環境変数を使用して、開発環境、テスト環境、運用環境を区別する判断を行いますif (process.env.NODE_ENV === 'development') {
axios.defaults.baseURL = 'http://dev.xxx.com'
} else if (process.env.NODE_ENV === 'production') {
axios.defaults.baseURL = 'http://prod.xxx.com'
}
devServer: { proxy: { '/proxyApi': { target: 'http://dev.xxx.com', changeOrigin: true, pathRewrite: { '/proxyApi': '' } } } }
ほとんどの場合、以下のリクエスト ヘッダーは固定されています。いくつかの特別なリクエスト ヘッダーが必要になる場合のみです。ここでは、ユニバーサル リクエスト ヘッダーが基本構成として使用されます。特別なリクエスト ヘッダーが必要な場合は、特別なリクエスト ヘッダーをパラメータとして渡し、基本設定を上書きします。 const service = axios.create({
...
timeout: 30000, // 请求 30s 超时
headers: {
get: {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
// 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
},
post: {
'Content-Type': 'application/json;charset=utf-8'
// 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
}
},
})
最初にカプセル化されたメソッドを導入し、呼び出されたインターフェイスはメソッドに再カプセル化されて公開されます // get 请求
export function httpGet({
url,
params = {}
}) {
return new Promise((resolve, reject) => {
axios.get(url, {
params
}).then((res) => {
resolve(res.data)
}).catch(err => {
reject(err)
})
})
}
// post
// post请求
export function httpPost({
url,
data = {},
params = {}
}) {
return new Promise((resolve, reject) => {
axios({
url,
method: 'post',
transformRequest: [function (data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
}
return ret
}],
// 发送的数据
data,
// url参数
params
}).then(res => {
resolve(res.data)
})
})
}
import { httpGet, httpPost } from './http' export const getorglist = (params = {}) => httpGet({ url: 'apps/api/org/list', params })
ページ内で直接呼び出すことができます
// .vue import { getorglist } from '@/assets/js/api' getorglist({ id: 200 }).then(res => { console.log(res) })
こうすることで API を一元管理できるようになり、将来的にはメンテナンスや変更は api.js ファイル内で行うだけで済みます。
リクエストインターセプタリクエスト インターセプタはそれぞれに存在できます。各リクエストにトークンを追加すると、統合処理後のメンテナンスが容易になります。
// 请求拦截器 axios.interceptors.request.use( config => { // 每次发送请求之前判断是否存在token // 如果存在,则统一在http请求的header都加上token,这样后台根据token判断你的登录情况,此处token一般是用户完成登录后储存到localstorage里的 token && (config.headers.Authorization = token) return config }, error => { return Promise.error(error) })
レスポンス インターセプタ
レスポンス インターセプタは、次のことを行うことができます。ステータスコードに基づいてログインステータスや認可を判断するなどの操作 カプセル化はプログラミングにおいて非常に意味のある方法です。 #axios のパッケージ化に絶対的な標準はありません。パッケージ化がプロジェクトのニーズを満たし、使いやすい限り、それは優れたパッケージング ソリューションです vuejs ビデオ チュートリアル Web フロントエンド開発 以上がAxios をカプセル化する Vue は何に役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。// 响应拦截器
axios.interceptors.response.use(response => {
// 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
// 否则的话抛出错误
if (response.status === 200) {
if (response.data.code === 511) {
// 未授权调取授权接口
} else if (response.data.code === 510) {
// 未登录跳转登录页
} else {
return Promise.resolve(response)
}
} else {
return Promise.reject(response)
}
}, error => {
// 我们可以在这里对异常状态作统一处理
if (error.response.status) {
// 处理请求失败的情况
// 对不同返回码对相应处理
return Promise.reject(error.response)
}
})

ホット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)

ホットトピック









HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes< router-link to ="/" Component Window.history.back()、およびメソッド選択はシーンに依存します。

VUEマルチページ開発は、VUE.JSフレームワークを使用してアプリケーションを構築する方法です。アプリケーションは別々のページに分割されます。コードメンテナンス:アプリケーションを複数のページに分割すると、コードの管理とメンテナンスが容易になります。モジュール性:各ページは、簡単に再利用および交換するための別のモジュールとして使用できます。簡単なルーティング:ページ間のナビゲーションは、単純なルーティング構成を介して管理できます。 SEOの最適化:各ページには独自のURLがあり、SEOに役立ちます。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 < script>でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

VUEの関数傍受は、指定された期間内に関数が呼び出され、パフォーマンスの問題を防ぐ回数を制限するために使用される手法です。実装方法は次のとおりです。LodashLibrary:Import {Debounce}から「Lodash」からインポート。 debounce関数を使用して、インターセプト関数を作成します。インターセプト関数を呼び出すと、制御関数は500ミリ秒でせいぜい1回呼び出されます。
