ホームページ >ウェブフロントエンド >jsチュートリアル >vue での axios パッケージ化の基本的な紹介 (コード付き)

vue での axios パッケージ化の基本的な紹介 (コード付き)

不言
不言オリジナル
2018-08-14 15:41:313370ブラウズ

この記事では、Vue での axios パッケージ化の基本的な概要を説明します (コード付き)。必要な方は参考にしていただければ幸いです。

Axios は、ブラウザーと Node.js で使用できる Promise ベースの HTTP ライブラリです。 vue プロジェクトで axios を使用することは非常に賢明な選択です。なぜなら、vue 関係者は今後 vue-resource を保守せず、axios の使用を推奨すると発表したからです。

1 なぜ axios を選ぶのですか?

  1. axios を使用すると、たとえば、応答時に応答情報を傍受し、ステータス コードを判断し、

  2. リクエストのタイムアウトを設定します。例えば、3000ms経っても応答がない場合、リクエストは停止されます

  3. promiseに基づいて、thenまたはcatchを使用してリクエストを簡単に処理できます

  4. jsonデータを自動的に変換します

2 使用方法?

次のメソッドを使用して http リクエストをカプセル化できます

1. npm install axios --save
2. bower install axios --save
3. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3。公式 Web サイトで示されている例:

axios.get('/user?ID=12345')
  .then(function(response){
    console.log(response);
  })
  .catch(function(err){
    console.log(err);
  });
これに基づいて、特定のページで post get put delete メソッドを再度カプセル化する必要があります。インターフェイス関数を呼び出して渡すだけです。パラメータを入力するだけで、URL、ヘッダーなどの残りの部分はカプセル化する必要があります。

たとえば、index.vue の関数を使用して、id を通じて対応するユーザー情報を取得し、返される結果は then メソッドの結果になります

API.getUserInfo({id:'01'}).then((result)=>{})
4 実装アイデア

新しいファイルを作成し、次のような axios オブジェクト インスタンスを構築しますas axios.js

import axios from 'axios';
import router from '../router';
// 创建axios实例
const service = axios.create({            
  timeout: 30000 // 请求超时时间                                   
})
// 添加request拦截器 
service.interceptors.request.use(config => {         
  return config
}, error => {
  Promise.reject(error)
})
// 添加respone拦截器
service.interceptors.response.use(                  
  response => {
    let res={}; 
    res.status=response.status
    res.data=response.data;
    return res;
  },
  error => {
    if(error.response && error.response.status == 404){
     router.push('/blank.vue')
    }
   
        
    return Promise.reject(error.response)
  }
)

export function get(url, params = {}) {
  params.t = new Date().getTime(); //get方法加一个时间参数,解决ie下可能缓存问题.
  return service({
    url: url,
    method: 'get',
    headers: {     
    },
    params
  })
}


//封装post请求
export function post(url, data = {}) { 
  //默认配置 
  let sendObject={
    url: url,
    method: 'post',
    headers: {
      'Content-Type':'application/json;charset=UTF-8'       
    },
    data:data
  };
  sendObject.data=JSON.stringify(data);
  return service(sendObject)
}

//封装put方法 (resfulAPI常用)
export function put(url,data = {}){
  return service({
    url: url,
    method: 'put',
    headers: {
      'Content-Type':'application/json;charset=UTF-8'       
    },
    data:JSON.stringify(data)
  }) 
}
//删除方法(resfulAPI常用)
export function deletes(url){
  return service({
    url: url,
    method: 'delete',
    headers: {}
  }) 
}

//不要忘记export
export {
  service
}
上記のコードは主に基本的な axios パッケージを実装しています。リクエストが成功すると、主にステータス コードやデータなどのいくつかの有用な情報を取得し、エラーを処理する必要があります。同時に、404 を返してジャンプするなど、新しいインターフェイスに移動します

インターフェイス関数をカプセル化します

api.js などの新しいファイルを作成します

import {get, post,deletes,put} from './axios.js' ;//导入axios实例文件中方法
let bsae_api = process.env.BASE_API ? './'+process.env.BASE_API :'..' //获取项目api请求地址
//根据id获取用户信息
export const getUserInfoById=(id)=>{
    return get(`${bsae_api}/web/user/${id}`); //resfulapi风格
}
特定のページにはindex.vueを使用します

import API from '@/utils/api'
getUserInfo(){
  API.getUserInfoById('01).then((result)=>{
   }).catch((error)=>{
 })
}
上記は基本ですaxios パッケージングの紹介

関連する推奨事項:

vue は axios とカプセル化を使用します

axios カプセル化フェッチ呼び出しの詳細な説明

以上がvue での axios パッケージ化の基本的な紹介 (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。