ホームページ > 記事 > ウェブフロントエンド > この記事では、vue プロジェクトで axios を使用する方法について説明しましょう。基本的な使用量の共有
ヒント: この記事では、vue プロジェクトの axios の例について詳しく説明します。 Vue.js フレームワークを使用してフロントエンド プロジェクトを開発する場合、ajax リクエストがサーバー インターフェイスに送信されることがよくありますが、開発プロセス中に、プロジェクトでの使用を容易にするために axios をさらにカプセル化する必要があります。 [学習ビデオ共有: vue ビデオ チュートリアル 、Web フロントエンド ビデオ ]
#axiosフレームワーク フルネーム (ajax – I/O – system):
および
node.js に基づく http クライアント、Promise API
Ajax について話さなければなりません。古いブラウザ ページがサーバーにデータを要求すると、ページ全体のデータが返されるため、ページが強制的に更新されることになり、あまり使い勝手が良くありません。また、ページ上のデータの一部を変更するだけで済みますが、ページ全体のデータがサーバーから送信されるため、多くのネットワーク リソースが消費されます。ページ上の一部のデータを変更するだけで済み、ページを更新しないことも望まれるため、非同期ネットワーク リクエストが発生します。
Ajax
非同期ネットワーク要求。 Ajax を使用すると、ページを更新せずにデータをリクエストできます。 jQuery でカプセル化された ajax、ネイティブ XMLHttpRequest、axios など、ajax を実装する方法は数多くあります。しかし、すべてのメソッドには長所と短所があります:
ネイティブ XMLHttpRequest の設定と呼び出しメソッドは非常に面倒で、非同期リクエストの実装は非常に面倒です。
これは新しいものではありません。このテクノロジーは本質的にネイティブ XMLHttpRequest のカプセル化であり、ブラウザーや nodejs HTTP クライアントで使用できますが、Promise に基づいており、最新の ES 仕様に準拠しています。次の特徴があります:
ブラウザで XMLHttpRequest リクエストを作成します
npm install axiosbower インストール
bower install axioscdn
<script></script>
main.js
ファイルを通じて導入vue プロジェクト コンポーネントにaxios
import axios from 'axios' Vue.prototype.$axios = axios
を導入し、
axios
<script> export default { mounted(){ this.$axios.get('/goods.json').then(res=>{ console.log(res.data); }) } } </script>
1. axios がリクエストできるメソッド: get: データを取得してリクエストします。指定された情報、エンティティ オブジェクトを返します。
2. リクエストの取得サンプルコード
方法 1
//请求格式类似于 http://localhost:8080/goods.json?id=1 this.$axios.get('/goods.json',{ params: { id:1 } }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
方法 2
this.$axios({ method: 'get', url: '/goods.json', params: { id:1 } }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
##3. リクエストの投稿投稿リクエストは通常、2 つのタイプに分類されます。1、
form-dataフォーム送信。このタイプは、画像やファイルをアップロードするときによく使用されます
2application/ json は通常、Ajax 非同期リクエストに使用されます
サンプル コード
メソッド 1
this.$axios.post('/url',{ id:1 }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
メソッド 2
$axios({ method: 'post', url: '/url', data: { id:1 } }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
form-data request
let data = { //请求参数 } let formdata = new FormData(); for(let key in data){ formdata.append(key,data[key]); } this.$axios.post('/goods.json',formdata).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
#putリクエスト#this.$axios.put('/url',{
id:1
}).then(res=>{
console.log(res.data);
})
#パッチリクエスト
this.$axios.patch('/url',{ id:1 }).then(res=>{ console.log(res.data); })
5. 削除リクエスト
サンプルコード パラメータはプレーンテキストです。フォームで送信します。
this.$axios.delete('/url',{ params: { id:1 } }).then(res=>{ console.log(res.data); })パラメータはカプセル化されたオブジェクトの形式で送信されます。
this.$axios.delete('/url',{ data: { id:1 } }).then(res=>{ console.log(res.data); }) //方法二 axios({ method: 'delete', url: '/url', params: { id:1 }, //以明文方式提交参数 data: { id:1 } //以封装对象方式提交参数 }).then(res=>{ console.log(res.data); })
6. 同時リクエスト
同時リクエスト: 複数のリクエストを同時に行い、戻り値を均一に処理しますサンプルコード###### 示例代码 可以同时创建多个axios实例。 示例代码 示例代码 示例代码 以上配置的优先级为:请求配置 > 实例配置 > 全局配置 拦截器:在请求或响应被处理前拦截它们 示例代码 示例代码 示例代码 示例代码 示例代码 this.$axios.all([
this.$axios.get('/goods.json'),
this.$axios.get('/classify.json')
]).then(
this.$axios.spread((goodsRes,classifyRes)=>{
console.log(goodsRes.data);
console.log(classifyRes.data);
})
)
四、Axios实例
let instance = this.$axios.create({
baseURL: 'http://localhost:9090',
timeout: 2000
})
instance.get('/goods.json').then(res=>{
console.log(res.data);
})
axios实例常用配置:
//配置全局的超时时长
this.$axios.defaults.timeout = 2000;
//配置全局的基本URL
this.$axios.defaults.baseURL = 'http://localhost:8080';
let instance = this.$axios.create();
instance.defaults.timeout = 3000;
this.$axios.get('/goods.json',{
timeout: 3000
}).then()
五、拦截器
this.$axios.interceptors.request.use(config=>{
// 发生请求前的处理
return config
},err=>{
// 请求错误处理
return Promise.reject(err);
})
//或者用axios实例创建拦截器
let instance = $axios.create();
instance.interceptors.request.use(config=>{
return config
})
this.$axios.interceptors.response.use(res=>{
//请求成功对响应数据做处理
return res //该返回对象会传到请求方法的响应对象中
},err=>{
// 响应错误处理
return Promise.reject(err);
})
let instance = this.$axios.interceptors.request.use(config=>{
config.headers = {
token: ''
}
return config
})
//取消拦截
this.$axios.interceptors.request.eject(instance);
六、错误处理
this.$axios.get('/url').then(res={
}).catch(err=>{
//请求拦截器和响应拦截器抛出错误时,返回的err对象会传给当前函数的err对象
console.log(err);
})
七、取消请求
let source = this.$axios.CancelToken.source();
this.$axios.get('/goods.json',{
cancelToken: source
}).then(res=>{
console.log(res)
}).catch(err=>{
//取消请求后会执行该方法
console.log(err)
})
//取消请求,参数可选,该参数信息会发送到请求的catch中
source.cancel('取消后的信息');
以上がこの記事では、vue プロジェクトで axios を使用する方法について説明しましょう。基本的な使用量の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。