axios的简易封装
2018-03-27 17:58
381 查看
繁琐的http请求多而复杂,这里就将axios的get和post进行封装,以方便后续在项目中方便的使用。
首先创建一个名为http.js的js然后下面就是http.js中的代码:
写到这里http.js的内容也算是结束了。
下面还有就是api的一个封装了:
这两个js写完一定要进行全局的配置,或者说到时那个组件需要就给他单独的引用也是可以的,我是直接将这个配置到全局里面去了为了方便下面是在main.js中的引入代码:
在这里就可以把你的参数什么的直接放进去就可以调用了,到这里也就结束了!!
首先创建一个名为http.js的js然后下面就是http.js中的代码:
http.js
import axios from 'axios' import qs from 'qs' let localhosts = '这里是要请求的url'; axios.interceptors.request.use(config => { // loading return config }, error => { return Promise.reject(error) }); axios.interceptors.response.use(response => { return response }, error => { return Promise.resolve(error.response) }); function checkStatus(response) { // loading // 如果http状态码正常,则直接返回数据 if (response && (response.status === 200 || response.status === 304 || response.status === 400)) { return response // 如果不需要除了data之外的数据,可以直接 return resp 4000 onse.data } // 异常状态下,把错误信息返回去 return { status: 404, msg: '网络异常' } } function checkCode(res) { // 如果code异常(这里已经包括网络错误,服务器错误,后端抛出的错误),可以弹出一个错误提示,告诉用户 if (res.status === 404) { // alert(res.msg) } if (res.data && (!res.data.success)) { // alert(res.data.error_msg) } return res } export default { post (url, data) { return axios({ method: 'post', baseURL: localhosts, // https://cnodejs.org/api/v1 url, data: qs.stringify(data), timeout: 10000, headers: { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }).then( (response) => { return checkStatus(response) } ).then( (res) => { return checkCode(res) } ) }, get (url, params) { return axios({ method: 'get', baseURL: localhosts, url, params, // get 请求时带的参数 timeout: 10000, headers: { 'X-Requested-With': 'XMLHttpRequest' } }).then( (response) => { return checkStatus(response) } ).then( (res) => { return checkCode(res) } ) } }
写到这里http.js的内容也算是结束了。
下面还有就是api的一个封装了:
api.js
export default { right: '/dev/reverse', // 正确路径/topic/5433d5e4e737cbe96dcef312 container:'/dev/history', error: '/topc/5433d5e4e737cbe96dcef312', // url错误 backEnd: '/topic/5433d5e4e737cbe96dcef31' // 参数错误 }
这两个js写完一定要进行全局的配置,或者说到时那个组件需要就给他单独的引用也是可以的,我是直接将这个配置到全局里面去了为了方便下面是在main.js中的引入代码:
main.js
import Vue from 'vue' import App from './App' import router from './router' import http from './utils/http' import api from './utils/api' Vue.prototype.http = http; Vue.prototype.api = api; Vue.config.productionTip = false; /* eslint-disable no-new */ new Vue({ el: '#app', router, components: {App}, template: '<App/>' });
一定要配置进去要不然没有效果的!!!!!!
下面的就是在项目中的引用了这玩意主要就是配合vue来进行开发的所以我就只上获取数据的代码了:
methods: { //获取接口 fetchDatas: async function (currentIndex, pageName) { let params = { index: currentIndex, pagesize: pageName, }; const res = await this.http.get(this.api.container, params);//获取成功 if (res.status == 200) { this.getpage = res.data.data; this.pagedata = this.getpage.records; this.total = this.getpage.total;//拿到总条数 } else { const dataError = await this.http.get(this.api.error, params);//获取失败 if (dataError.status != 200) { console.info(dataError); } } }
在这里就可以把你的参数什么的直接放进去就可以调用了,到这里也就结束了!!
相关文章推荐
- JavaScript封装简易的图片轮播函数
- vue请求类的封装,基于jQuery版本和Axios,两个版本
- 二次封装selenium,简易框架Jzps
- 基于微信小程序的ajax拦截器(简易版的axios)
- 最简易的网络框架封装(新手可看)
- vue 里面使用axios 和封装的示例代码
- 富文本的封装-NSAttributedString 的简易封装
- 封装的简易多线程.net邮件发送类
- 简易Java日志(Log)输出工具的封装
- Vue.js插件axios——封装一个可以灵活使用的ajax
- vue中用axios实现http封装参数拦截
- TP3.2 简易封装增、删、改、查、上传、分页、操作日志
- 封装 axios
- 轻量级简易 Java http 网络请求的封装: SimpleHttpUtils
- sequelize-auto简易使用--封装一个端口
- axios 封装
- 二次封装selenium,简易框架Jzps
- Android网络开源库-Retrofit(五)简易封装
- okhttp的个人简易封装
- Vue: axios 请求封装及设置默认域名前缀 (for Vue 2.0)