vue项目实践-添加axios封装api请求

安装 axios

npm install axios --save

创建实例 (utils/fetch.js)

axios 默认提交格式为:application/json 可使用 qs 模块(需要安装)转换后提交格式为 application/x-www-form-urlencoded 通过设置 transformRequest 属性 data => qs.stringify(data) 可以正常表单形式提交

import axios from 'axios'

const instance = axios.create({
  baseURL: 'apiBaseUrl', // api的base_url
  timeout: 10000 // 请求超时时间
  // transformRequest: data => qs.stringify(data) //
})
// request拦截器
instance.interceptors.request.use(
  e => {
    e.params = e.params || {}
    e.headers = e.headers || {}
    //set 默认值
    return e
  },
  error => ({ status: 0, msg: error.message })
)
// respone拦截器
instance.interceptors.response.use(
  response => {
    const resp = response.data
    if (response.status === 200) {
      return resp
    }
    return resp
  },
  error => {
    console.log('err' + error) // for debug
    return Promise.reject(error)
  }
)
export default instance

将 api 请求封装到 api 文件夹下

在 api 文件中新建接口模块并使用 axios 实例(utils/fetch.js) src/api/api_test.js

import request from '@/utils/fetch'

export function test(data) {
  return request({
    url: '/test',
    method: 'post',
    data: data
  })
}

使用的时候,可通过引入 api/模块.js 调用方法,也可以通过安装插件的形式将 api 接口扩展到 vue 实例中,使其可以更方便的在项目中使用

以 test 模块为例创建一个$api 扩展

src/api/index.js

import * as api_test from './test'

const apiObj = {
  api_test
}

const install = function(Vue) {
  if (install.installed) return
  install.installed = true
  Object.defineProperties(Vue.prototype, {
    $api: {
      get() {
        return apiObj
      }
    }
  })
}
export default {
  install
}

在 main.js 安装 $api 扩展:

import api from './api'
Vue.use(api)

在项目中调用:this.$api.api_test.test().then(resp=>{...}).catch(()=>{...})

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

hbase集群安装(2)-ubuntu下jdk安装

Ubuntu下安装jdk 我的安装路径是根目录下的software 把jdk压缩包解压到software目录下 ? 解压花一会时间 然后设置环境变量的命令 ? ...

20290
来自专栏十月梦想

HTML5新增表单类型

HTML5新增了input更多类型的框,如颜色,邮箱,多文件还有对正则表达式的支持!

13830
来自专栏lgp20151222

js页面刷新跳转的几种方式及区别

58310
来自专栏liulun

【JAVA WEB教程】jsp环境搭建+部署网站(eclipse+tomcat)【详细+图文】

下载tomcat7.X ? 下载地址为:http://tomcat.apache.org/download-70.cgi 下载完成之后就开始安装 ? Next ...

97480
来自专栏ytkah

dedecms自定义表单提交成功后提示信息修改和跳转链接修改

  我们在用dedecms自定义表单提交成功后提示信息一般是"Dedecms 提示信息",这个要怎么改成自己想要的文字呢?还有就是提示页停留时间,目前估计就2秒...

38240
来自专栏全栈之路

win7 java环境变量配置

选择电脑界面上的 计算机(或者我的电脑电脑图标),按下鼠标右键,出现菜单,看到有’属性’这一项,点击确定

2K30
来自专栏程序员的碎碎念

微信小程序二维码实例开发

开始 小编初学微信小程序,想做一个二维码生成器;作为一个小白,踩了不少坑,在这里分享给大家“如何在微信小程序上生成二维码”。 步骤 就像写前端代码一样,html...

61050
来自专栏java达人

$(window).load()与$(document).ready()的区别

1.执行时间不同:从字面的意思上理解,$(document).ready()就是文档准备好了。也就是浏览器已经解析完整个html文档,dom树已经建立起来了,...

191100
来自专栏python学习之旅

Python+Selenium笔记(十六)屏幕截图

 (一) 方法 方法 简单说明 save_screenshot(filename) 获取当前屏幕截图并保存为指定文件 fi...

41470
来自专栏weixuqin 的专栏

Django 项目重命名

  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。

17310

扫码关注云+社区

领取腾讯云代金券