vue+axios 对restful 请求封装
礼拜天来公司整理项目,项目是最近开始重构的,里面的各种http请求接口是restful结构的(为了提升项目的比格),整理一下笔记
[restful介绍][1]博主讲的很详细
技术栈: vue + vuex + element-ui + axios
import axios from 'axios'
import store from '../vuex/store'
import { Message } from 'element-ui'
// axios 配置
axios.defaults.timeout = 5000
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'
// POST传参序列化
axios.interceptors.request.use((config) => {
// 单个网站的admin用户
config.headers.common['Gw-Admin-Access-Token'] = store.getters.adminAccessToken
// 整个网点user
config.headers.common['Gw-User-Access-Token'] = store.getters.userAccessToken
return config
}, (err) => {
Message.error('参数错误')
return Promise.reject(err)
})
// 返回状态判断
axios.interceptors.response.use((res) => {
const response = res.data
if (response.msg) {
if (response.code === 0) {
Message.success(response.msg)
} else {
Message.error(response.msg)
}
}
return response
}, (err) => {
if (err && err.response) {
switch (err.response.status) {
case 401:
Message.error('未授权,请登录')
window.location.href = '/#/auth/login'
break
case 404:
Message.error('接口请求异常: ' + err.response.config.url + ', 请重试')
break
default:
Message.error('Oops, 出错啦')
}
}
return Promise.reject(err)
})
export default function request (method, url, data) {
// 处理请求的url和数据
data = method === 'get' ? { params: data } : data
// 发送请求
return new Promise((resolve, reject) => {
axios[method](url, data)
.then(response => {
resolve(response)
}, error => {
reject(error)
})
.catch(error => {
reject(error)
})
})
.catch(error => {
console.log(error)
})
}
封装好的axios请求如下:
1.在相应的api文件中定义方法(如下是goods中的删除商品分类的方法)
delCatList (data) {
return Request('delete', API.GOODS.GOODS_CAT + '/' + data) //其它的操作将对应的delete换成(put、post、get、delete)即可
},
2.在需要的vue界面调用
首先:import Goods from '@/fetch/request/goods'
methods方法:
Goods.addCatList(data).then(res => {
if (res.code === 0) {
console.log(res)
}
})
这里由于封装的时候将axios封装为Promise对象 ,所以可以直接使用.then(),res即为接口返回的结果,代码简介了不少
[Promise对象--阮一峰][2]
总得来说,一次封装,永久收益,哈哈,体验还是不错的,restful的架构风格也是很不错。祝大家周末愉快,杭州下雨:(。。。。
来源:https://segmentfault.com/a/1190000016146893
vue+axios 对restful 请求封装的更多相关文章
- vue axios配置 发起请求加载loading请求结束关闭loading
axios带有请求拦截器,避免在每个请求里面加loading重复操作,可以封装进去,在请求开始时加载loading层,请求结束关闭,loading层用vux的loading加载 axios.js im ...
- vue axios 取消上次请求
axios.defaults.timeout = 1000 * 5axios.defaults.baseURL = baseUrlvar CancelToken = axios.CancelToken ...
- vue --- axios发post请求后台接收不到参数的三种解决方案
最近用vue 做项目使用axios 发送post 请求时遇到了前端传数据后端接收不到的情况: 后来仔细对比发现axios传值是这样的: 而 ajax 传值是这样的: 一个 Request Paylo ...
- Asp.net MVC Vue Axios无刷新请求数据和响应数据
Model层Region.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; ...
- 请求超时VUE axios重新再次请求
//在main.js设置全局的请求次数,请求的间隙 axios.defaults.retry = 4; axios.defaults.retryDelay = 1000; axios.intercep ...
- vue axios 发送post请求,后端接收参数为null
1首先检查自己的传参方式是否正确,我是传一个对象,没有问题,接口也触发了 2查了下资料说是 Content-Type的问题,设置为 'application/x-www-form-urlencod ...
- vue axios拦截器的封装
// request.js import axios from 'axios' import qs from 'qs' // 创建axios实例 const service = axios.creat ...
- Vue axios发送Http请求
axios 1.cnpm install axios --save 2.在vue文件中引入,import Axios from 'axios' 3.使用,Axios.get(url).then((re ...
- vue axios跨域请求,apache服务器设置
问题所在axios请求会发送两次请求 也就是说,它会先使用options去测试,你这个接口是否能够正常通讯,如果不能就不会发送真正的请求过来,如果测试通讯正常,则开始正常请求. 思路: 跨域--> ...
随机推荐
- CodeChef TRIPS-Children Trips 树上分块
参考文献国家集训队2015论文<浅谈分块在一类在线问题的应用>-邹逍遥 题目链接 题目大意 一棵n个节点的树,树的每条边长度为1或2,每次询问x,y,z. 要求输出从x开始走,每次只能走到 ...
- Codeforces 500D. New Year Santa Network
题目大意 给你一颗有\(n\)个点的树\(T\),边上有边权. 规定,\(d(i,j)\)表示点i到点j路径上的边权之和. 给你\(q\)次询问,每次询问格式为\(i, j\),表示将按输入顺序排序的 ...
- vue题目
1.active-class是哪个组件的属性?嵌套路由怎么定义?答:vue-router模块的router-link组件. 2.怎么定义vue-router的动态路由?怎么获取传过来的动态参数? 答: ...
- 分批次删除大表数据的shell脚本
#!/bin/bash # 分别是主机名,端口,用户,密码,数据库,表名称,字段名称 readonly HOST="XXX" readonly PORT=" readon ...
- Ionic App 更新插件cordova-plugin-app-version
1.安装相关插件 cordova-plugin-file ,cordova-plugin-file-opener2,cordova-plugin-file-transfer,cordova-plug ...
- 深入浅出 Java Concurrency (19): 并发容器 part 4 并发队列与Queue简介[转]
Queue是JDK 5以后引入的新的集合类,它属于Java Collections Framework的成员,在Collection集合中和List/Set是同一级别的接口.通常来讲Queue描述的是 ...
- 软件-浏览器-GoogleChrome:Google Chrome
ylbtech-软件-浏览器-GoogleChrome:Google Chrome Google Chrome是一款由Google公司开发的网页浏览器,该浏览器基于其他开源软件撰写,包括WebKit, ...
- Jmeter分布式测试过程中遇到的问题及摘抄前辈问题汇总
遇到的常见问题: 1.在Controller端上控制某台机器Run,提示"Bad call to remote host". 解决方法:检查被控制机器上的jmeter-server ...
- 安装配置flask环境
安装 Flask 好的,让我们开始吧! 现在我们必须开始安装 Flask 以及一些我们会用到的扩展.我首选的方式就是创建一个虚拟环境,这个环境能够安装所有的东西,而你的主 Python 不会受到影响. ...
- UVA1416/LA4080 Warfare And Logistics
题目大意:有N个点,M条路,如果两条路不连通的话,就将这两条路的距离设置为L 现在要求你求出每两点之间的最短距离和 接着要求 求出炸断 给出的M条路中的一条路后,每两点之间的最短距离和的最大值(翻译来 ...