Vue-axios 在vue cli中封装

common/post.js

import axios from ‘axios‘ // 引入axios
import qs from ‘qs‘ // 引入qs
axios.defaults.baseURL = ‘/apis‘ //请求地址的域名(此处使用了代理所以直接填/apis

// 拦截响应response,进行错误处理
axios.interceptors.response.use(function (response) {
  // 成功处理
  // code处理
  response.code = response.data.code
  switch (response.status) {
      case 200:
        break;
    case 400: response.data.msg = ‘错误请求‘
      break;
    case 401: response.data.msg = ‘未授权,请重新登录‘
      break;
    case 403: response.data.msg = ‘拒绝访问‘
      break;
    case 404: response.data.msg = ‘请求错误,未找到该资源‘
      break;
    case 405: response.data.msg = ‘请求方法未允许‘
      break;
    case 408: response.data.msg = ‘请求超时‘
      break;
    case 500: response.data.msg = ‘服务器端出错‘
      break;
    case 501: response.data.msg = ‘网络未实现‘
      break;
    case 502: response.data.msg = ‘网络错误‘
      break;
    case 503: response.data.msg = ‘服务不可用‘
      break;
    case 504: response.data.msg = ‘网络超时‘
      break;
    case 505: response.data.msg = ‘http版本不支持该请求‘
      break;
  }
     return response;
}, function (error) {

  return Promise.reject(error);
});

async function requestGet(options) {
// 这里主要是post方法的封装,get方法同理
  options.method = ‘post‘
  if (options.config === ‘formData‘) {
    options.headers = {‘Content-Type‘: ‘multipart/form-data‘}
  } else {
    options.data = qs.stringify(options.data)
  }
  return new Promise((resolve,reject) => {
    axios(options).then(res => {
    //  这里主要根据后来返回的数据作判断,请根据实际情况
      if(res.data.code == ‘200‘) {
        resolve(res.data)
      } else {
        reject(res.data)
      }
    }).catch(error => {
    // 显示拦截器对respone处理后的可读错误
      console.log(error)
    })
  })
}

export default { requestGet }

main.js

import Post from ‘../static/js/post.js‘/*post公共*/

const { requestPost } = Post/*post*/

Vue.prototype.$requestPost = requestPost // post挂载到全局上

页面中:

acceptlist(){
                   this.$requestGet({
                    url: this.http+‘/cdk/paperTypeMobile/findList‘,
                    data: {}
                }).then(res => {
                    console.log(res)
                    this.columns=res.obj
                }).catch(err=>{
                    console.log(err)
                })
               }

注:main.js和post.js中要引入axios、qs

原文地址:https://www.cnblogs.com/weilizou/p/10937645.html

时间: 2024-10-08 10:47:54

Vue-axios 在vue cli中封装的相关文章

记vue中封装axios

文件结构: mocks:中是本地json数据 adapter.js: 调用本地数据方法 resources.js 统一接口管理 export default { fetchDict: { url: '/v1/system/fetchDcType', method: 'post' } } 重点是以下俩个文件 index.js 拦截器以及请求头设置,并添加实例属性 import Vue from 'vue'; import axios from 'axios'; import { Toast } f

vue axios 封装 全局使用

[不墨迹直接上码系列] 代码分三步: 1. 创建一个api.js,封装axios 2. 在main.js引入,并加到vue原型上 3. 全局使用 1. 创建+封装 //api.js import axios from "axios"; var apiUrl = ''; function yuanAjax(url,data,successCallback,errorCallback) { axios.post(apiUrl + url,data).then(function (res)

【实战】Vue全家桶(vue + axios + vue-router + vuex)搭建移动端H5项目

使用Vue全家桶开发移动端页面. 本博文默认已安装node.js. github链接 一.准备工作 安装vue npm install vue 安装脚手架vue-cli npm install -g @vue/cli 创建webpack项目 vue init webpack my-app 运行 cd my-app npm run dev 按照提示,在浏览器打开http://localhost:8082/,效果如下: 安装状态管理vuex npm install vuex --save-dev 目

vue+axios+promise实际开发用法

axios它是基于promise的http库,可运行在浏览器端和node.js中,然后作者尤雨溪也是果断放弃了对其官方库vue-resource的维护,直接推荐axios库,小编我也是从vue-resource转换过来的,差别说不来,我们讲一下axios在实际开发中的用法 axios特点 1.从浏览器中创建 XMLHttpRequests2.从 node.js 创建 http 请求3.支持 Promise API4.拦截请求和响应 (就是有interceptor)5.转换请求数据和响应数据6.取

vue+axios+elementUI文件上传与下载

vue+axios+elementUI文件上传与下载 Simple_Learn 关注 0.5 2018.05.30 10:20 字数 209 阅读 15111评论 4喜欢 6 1.文件上传 这里主要介绍一种,elementUI官网 上传组件 http-request 这种属性的使用. 图片.png 代码如下: <el-upload class="uploadfile" action="" :http-request='uploadFileMethod' :sh

Vue+axios 实现http拦截及路由拦截

现如今,每个前端对于Vue都不会陌生,Vue框架是如今最流行的前端框架之一,其势头直追react.最近我用vue做了一个项目,下面便是我从中取得的一点收获. 基于现在用vue+webpack搭建项目的文档已经有很多了,我就不再累述了. 技术栈 vue2.0 vue-router axios 拦截器 首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器处理方便很多. 这个项目我引入了element ui框架,所以我是结合element中loading和me

axios与vue的配合使用事例,实现缓存和重复加载的控制

import Vue from "vue"; import qs from "qs"; import Store from "../vuex/store.js" import Router from "../router/index.js" import isEmpty from "lodash/isEmpty" import { isUrl } from "./match.js" im

vue+axios 前端实现的常用拦截

一.路由拦截使用 router.beforeEach((to, from, next) => { if (to.meta.requireAuth) { // 判断该路由是否需要登录权限 if (store.state.token) { // 通过vuex state获取当前的token是否存在 next(); } else { next({ path: '/login', query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由 }

vue组件篇(2)---封装组件并发布到npm

瞎说说 vue小白,要进行应用开发:你们都用什么UI框架,求指教,不想踩坑(想太多,不踩坑???不存在的!!!too young too simple-) 同学1:pc端我用element UI,感觉组件的API方法.属性比较完善...?? 同学2:哈?我个人感觉他的样式有些生硬,不够炫酷美观??,用iView吧,组件丰富,动画效果cool~~~?? 同学3:真的吗?阔是有人说,iView组件虽然完美的把其他UI组件有的缺点完美避过,但是某某组件不够人性化....?? 同学4:用vue-beau