最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

vue中axios封装的基本介绍(附代码)

来源:懂视网 责编:小采 时间:2020-11-27 19:32:26
文档

vue中axios封装的基本介绍(附代码)

vue中axios封装的基本介绍(附代码):本篇文章给大家带来的内容是关于vue中axios封装的基本介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在vue项目之中使用axios是一个非常明智的选
推荐度:
导读vue中axios封装的基本介绍(附代码):本篇文章给大家带来的内容是关于vue中axios封装的基本介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在vue项目之中使用axios是一个非常明智的选

本篇文章给大家带来的内容是关于vue中axios封装的基本介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在vue项目之中使用axios是一个非常明智的选择,因为vue官方已经宣称不再维护vue-resource,并且推荐使用axios.

1 为什么选择axios?

  1. 使用axios可以统一做请求-响应拦截,例如响应时我们将响应信息拦截起来,判断状态码,从而弹出报错信息

  2. 设定请求超时,例如3000ms未响应则停止请求

  3. 基于promise,可以很方便地使用then或者catch来处理请求

  4. 自动转换json数据

2 如何使用?

可以使用以下方式

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

3 封装http请求
官网给定的实例:

axios.get('/user?ID=12345')
 .then(function(response){
 console.log(response);
 })
 .catch(function(err){
 console.log(err);
 });

在此基础上我们应该再次封装http中的post get put delete方法,在具体页面只需要调用接口函数以及传入params即可,其余例如url,header之类的我们应该进行封装。
例如在index.vue之中使用一个函数来实现通过id来获取对应的用户信息,返回结果在then方法的result之中

API.getUserInfo({id:'01'}).then((result)=>{})

4 实现思路
新建一个文件,构建一个axios对象实例 例如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)=>{
 })
}

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

vue中axios封装的基本介绍(附代码)

vue中axios封装的基本介绍(附代码):本篇文章给大家带来的内容是关于vue中axios封装的基本介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。在vue项目之中使用axios是一个非常明智的选
推荐度:
标签: 使用 VUE 使用的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top