礼拜天来公司整理项目,项目是最近开始重构的,里面的各种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 请求封装的更多相关文章

  1. vue axios配置 发起请求加载loading请求结束关闭loading

    axios带有请求拦截器,避免在每个请求里面加loading重复操作,可以封装进去,在请求开始时加载loading层,请求结束关闭,loading层用vux的loading加载 axios.js im ...

  2. vue axios 取消上次请求

    axios.defaults.timeout = 1000 * 5axios.defaults.baseURL = baseUrlvar CancelToken = axios.CancelToken ...

  3. vue --- axios发post请求后台接收不到参数的三种解决方案

    最近用vue  做项目使用axios 发送post 请求时遇到了前端传数据后端接收不到的情况: 后来仔细对比发现axios传值是这样的: 而 ajax 传值是这样的: 一个 Request Paylo ...

  4. Asp.net MVC Vue Axios无刷新请求数据和响应数据

    Model层Region.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; ...

  5. 请求超时VUE axios重新再次请求

    //在main.js设置全局的请求次数,请求的间隙 axios.defaults.retry = 4; axios.defaults.retryDelay = 1000; axios.intercep ...

  6. vue axios 发送post请求,后端接收参数为null

    1首先检查自己的传参方式是否正确,我是传一个对象,没有问题,接口也触发了 2查了下资料说是 Content-Type的问题,设置为   'application/x-www-form-urlencod ...

  7. vue axios拦截器的封装

    // request.js import axios from 'axios' import qs from 'qs' // 创建axios实例 const service = axios.creat ...

  8. Vue axios发送Http请求

    axios 1.cnpm install axios --save 2.在vue文件中引入,import Axios from 'axios' 3.使用,Axios.get(url).then((re ...

  9. vue axios跨域请求,apache服务器设置

    问题所在axios请求会发送两次请求 也就是说,它会先使用options去测试,你这个接口是否能够正常通讯,如果不能就不会发送真正的请求过来,如果测试通讯正常,则开始正常请求. 思路: 跨域--> ...

随机推荐

  1. Chapter 6 排序

    Chapter 6 排序 1-   直接插入排序 O(n2) O(1) 2-   折半插入排序 O(n2) O(1) 适合关键字较多 3-   希尔排序O(nlogn) O(1) 又名,缩小增量排序 ...

  2. Apache ActiveMQ教程

    一.特性及优势 1.实现JMS1.1规范,支持J2EE1.4以上 2.可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM) 3.支持多种语言客户端(j ...

  3. ORA-01790: 表达式必须具有与对应表达式相同的数据类型

    出现这种错误,要先看一下是不是sql中有用到连接:union,unio all之类的,如果有,需要注意相同名称字段的数据类型一定要相同.

  4. 2019-5-21-dotnet-core-使用-CoreRT-将程序编译为-Native-程序

    title author date CreateTime categories dotnet core 使用 CoreRT 将程序编译为 Native 程序 lindexi 2019-05-21 11 ...

  5. Leetcode60. Permutation Sequence第k个排列

    给出集合 [1,2,3,-,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132&qu ...

  6. Tomcat--远程Debug以及参数配置调优

    本文会讲解Tomcat远程Debug调试,Tomcat-manager监控(简单带过),psi-probe监控和Tomcat参数调优.本文基于Tomcat8.5版本. Tomcat远程Debug: 远 ...

  7. jqurey相册放大浏览效果。

    /*图片弹窗与切换*/ function honorLayer(){ var honorArray = honorArr(); var $msk = $('.js-mask'),$layer = $( ...

  8. Mysql--数据表碎片优化方法

    碎片产生原因: 大量批量插入和删除操作数据库,基于线性表的顺序存储结构的特点,出现了大量的空间碎片.一.优化步骤: 1.查看整库的情况 2.方便优化 3.整库所有表, 包含行数 索引长度 碎片空间 二 ...

  9. 学习mysql数据库

    1.数据库是怎么回事 数据库是存储数据的永久空间,通过一种特殊的方式存储到硬盘中 数据库分为关系型数据库和非关系型数据库 mysql查看数据的方式为:结构化查询语言(SQL语句) 访问mysql数据库 ...

  10. Pandas怎样按条件删除行?

    来自: https://stackoverflow.com/questions/13851535/delete-rows-from-a-pandas-dataframe-based-on-a-cond ...