安装 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(()=>{...})

vue项目实践-添加axios封装api请求的更多相关文章

  1. vue项目实践-添加express-mockjs进行数据模拟

    mock-server 在新项目开始的时候,后端框架还没有,前端就有能够自己操作的模拟数据的服务是可以有的 express-mockjs 是楼教主结合 express+mock-lite 造的一个轮子 ...

  2. 如何在VUE项目中添加ESLint

    如何在VUE项目中添加ESLint 1. 首先在项目的根目录下 新建 .eslintrc.js文件,其配置规则可以如下:(自己小整理了一份),所有的代码如下: // https://eslint.or ...

  3. react封装基于axios的API请求

    一.最近做的一个后台管理项目,基于antd-pro做的,需要封装基于axios请求,便于开发,直接上代码. import axios from 'axios'; export const Method ...

  4. 介绍vue项目中的axios请求(get和post)

    一.先安装axios依赖,还有qs依赖 npm install axios --save npm install qs --save qs依赖包用post请求需要用到的 插入一个知识点: npm in ...

  5. vue项目中关于axios的简单使用

    axios介绍 Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中 官方仓库:https://github.com/axios/axios 中文文档:htt ...

  6. 在vue项目中的axios使用配置记录

    默认vue项目中已经安装axios,基于element-ui开发,主要记录配置的相关. axiosConfig.js import Vue from 'vue' import axios from ' ...

  7. vue项目全局使用axios

    共有三种方法: 1.结合 vue-axios使用 首先在主入口文件main.js中引用 import axios from 'axios' import VueAxios from 'vue-axio ...

  8. 在vue项目中使用axios发送FormData

    这个是axios的中文文档,挺详细的: https://www.kancloud.cn/luponu/axios/873153 文档中的    使用 application/x-www-form-ur ...

  9. Vue项目实践中的功能实现与要点

    本贴记录项目实践中,各种功能的实现与技术要点,均有待改进. 路由切换的时候,显示loading动画 目前方案是: 在每个页面都手动装载一个loading组件组件的显示依赖vuex里面的一个值 , 在r ...

随机推荐

  1. Bootstrap-datepicker3官方文档中文翻译---Markup/标记(原文链接 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)

    Markup/标记 下面是已经支持的标签的例子.这些标签本身不会提供DatePicker控件:你需要在标签上实例化Datepicker. input/输入框 最简单的例子: input获得焦点 (使用 ...

  2. java 动态代理模式(jdk和cglib)

    package proxy.dynamicproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Met ...

  3. echarts 自定义配置带单位的 tooltip 提示框方法 和 圆环数据 tooltip 过长超出屏幕

    -------tip1-------- 在 tooltip  里边配置:拼接字符串: tooltip : { trigger: 'axis', formatter:function(params) { ...

  4. idea cpu 卡慢 占用100%

    1.修改idea配置文件D:\ideaIU-2017.2\bin\idea.exe.vmoptions 如: -server -Xms800m -Xmx800m -XX:MaxPermSize=512 ...

  5. Visual studio 2017 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包

    装完win10更新 发现vs杯具了… 提示 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 可以尝试在vs命令行 ...

  6. C# dynamic类型序列化和反序列化之Newtonsoft.Json,动态解析远端返回的jSON数据

    一.说明 1.Newtonsoft.Json 中的Linq To Json中提供了方便的json数据查询.修改等操作. 例如:JObject,JArray 2.在JObject.FromObject( ...

  7. 4.BN推导

    参考博客:https://www.cnblogs.com/guoyaohua/p/8724433.html 参考知乎:https://www.zhihu.com/question/38102762/a ...

  8. redis对hash进行的相关操作

    redis对hash类型操作的相关命令以及如何在python使用这些命令 redis对hash类型操作的命令: 命令 语法 概述 返回值 Redis Hdel 命令 hdel key field [f ...

  9. 了解javascript里面的 封装

    // 封装 //生成实例对象的原始模式 //假如我们把一个动物看成一个对象 var cat = { //那么它有名字和颜色两个属性 name:'', color:'' }; //接下来我们根据原形对象 ...

  10. Alpha冲刺——代码规范、冲刺任务与计划

    代码规范 作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 ...