关于axios
简介
axios是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
主要是用于向后台发起请求的,还有在请求中做更多是可控功能。
特点
从浏览器中创建 XMLHttpRequests
从 node.js 创建 http 请求
支持 Promise API
拦截请求和响应
转换请求数据和响应数据
取消请求
自动转换 JSON 数据
客户端支持防御 XSRF
安装
使用 npm:
$ npm install axios
使用 bower:
$ bower install axios
使用 cdn:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
使用
import axios from 'axios'
import router from '../router/index'
import Message from 'ant-design-vue/es/message'
import Cookies from 'js-cookie'
const service = axios.create({
baseURL: '/api', // 统一请求路径前缀
timeout: 15000// 请求超时时间
})
service.interceptors.request.use(config => {
let sessionId = Cookies.get('X-SESSION-ID') || ''
if (sessionId) {
config.headers['X-SessionId'] = sessionId // 让每个请求携带自定义token 请根据实际情况自行修改
}
return config
}, err => {
Message.error('请求超时')
return Promise.reject(err)
})
// http response 拦截器
service.interceptors.response.use(response => {
const data = response.data
// 根据返回的code值来做不同的处理(和后端约定)
switch (data.code) {
case 401:
// 未登录 清除已登录状态
router.push('/login')
return Promise.reject(new Error('401'))
case 403:
// 没有权限
if (data.message !== null) {
Message.error(data.message)
} else {
Message.error('未知错误')
}
return Promise.reject(new Error('未知错误'))
case 500:
// 错误
if (data.message !== null) {
Message.error(data.message)
} else {
Message.error('未知错误')
}
// return Promise.reject(new Error('未知错误'))
return Promise.reject(data.message)
default:
return data
}
}, (err) => { // 这里是返回状态码不为200时候的错误处理
Message.error(err.toString())
return Promise.reject(err)
})
export default service
API使用
import request from '@/utils/request'
// 所属区域
export function getListByGroupStartAdminArea () {
return request({
url: '/area/getListByGroupStartAdminArea'
})
}
// 直升机信息删除
export function deleteCopter (data) {
return request({
url: `/copter/deleteCopter`,
method: 'post',
data
})
}
页面使用
// 获取区域列表
_getListByGroupStartAdminArea () {
getListByGroupStartAdminArea().then(res => {
this.options = res.payload
})
},
// 删除直升机信息
handleDelete(record) {
let copter = this
this.$confirm({
title: '直升机信息删除',
content: '请确认是否将此直升机删除?',
okText: '确定',
cancelText: '取消',
onOk() {
deleteCopter({
id: record
}).then(res => {
copter.$message.error('删除成功!')
copter._getCopterList()
})
},
onCancel() {}
})
},
来源:https://segmentfault.com/a/1190000018129057
关于axios的更多相关文章
- 为什么axios请求接口会发起两次请求
之前在使用axios发现每次调用接口都会有两个请求,第一个请求时option请求,而且看不到请求参数,当时也没注意,只当做是做了一次预请求,判断接口是否通畅,但是最近发现并不是那么回事. 首先我们知道 ...
- axios基本用法
vue更新到2.0之后,作者就宣告不再对vue-resource更新,而是推荐的axios,前一段时间用了一下,现在说一下它的基本用法. 首先就是引入axios,如果你使用es6,只需要安装axios ...
- Axios、Lodash、TweenJS
Axios是一个基于promise的HTTP库 http://chuansong.me/n/394228451820 Lodash是一个JavaScript的函数工具集 http://www.css8 ...
- axios全攻略
随着 vuejs 作者尤雨溪发布消息,不再继续维护vue-resource,并推荐大家使用 axios 开始,axios 被越来越多的人所了解.本来想在网上找找详细攻略,突然发现,axios 的官方文 ...
- 抛弃vue-resource拥抱axios
vue-resource用法 import Vue from 'vue' import VueResource from 'vue-resource' Vue.use(VueResource) 是不是 ...
- Vue+axios 实现http拦截及路由拦截
现如今,每个前端对于Vue都不会陌生,Vue框架是如今最流行的前端框架之一,其势头直追react.最近我用vue做了一个项目,下面便是我从中取得的一点收获. 基于现在用vue+webpack搭建项目的 ...
- vue使用Axios做ajax请求
vue2.0之后,就不再对vue-resource更新,而是推荐使用axios 1. 安装 axios $ npm install axios 或 $ bower install axios 2. 在 ...
- vue全家桶(Vue+Vue-router+Vuex+axios)(Vue+webpack项目实战系列之二)
Vue有多优秀搭配全家桶做项目有多好之类的咱就不谈了,直奔主题. 一.Vue 系列一已经用vue-cli搭建了Vue项目,此处就不赘述了. 二.Vue-router Vue的路由,先献上文档(http ...
- 9.如何解决出现AXIOS的Request header field Content-Type is not allowed by Access-Control-Allow-Headers in preflight response.
问题描述: 由于restful接口需要在头部header传递两个字段: Content-Type: application/jsonAccess-Token: 84c6635800b14e0eba4f ...
- vue2.0设置proxyTable使用axios进行跨域请求
这里请求的是知乎日报的api,由@izzyleung这位大神提供的,这是github地址. 在vue-cli构建的项目中先安装axios npm install axios -S 这里暂不考虑用vue ...
随机推荐
- SDL 威胁建模工具入门 threat modeling tool
http://msdn.microsoft.com/zh-cn/magazine/dd347831.aspx threat modeling tool 威胁建模工具 minifuzz 文件模糊工具 c ...
- Java--运算符的优先级表
Java运算符的优先级表:
- Zabbix监控基础
1. 安装前准备 setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config ...
- 一个误区(关于javascript的字符串拼接)
前段时间听说了一个问题,说是,javascript中使用+=来拼接字符串会比使用Array的join方法慢几十倍以上,今天在工作间歇,就写了个例 子验证了一下,结果确完全相反,使用+=比join要快( ...
- Service Receiver Activity 之间的通信
一.Activity与Service 1. 通过Intent,例子如下: Intent intent = new Intent(this, Myservice.class); // intent .p ...
- git从历史上的某一次提交处建立分支
$ git log --oneline --all --graph --decorate * 1efcf18 (HEAD -> master) commit * 6a7ace8 commit * ...
- Linux ls命令
ls:即列表List的意思,用来列出目录下的文件用来列出给定目录下的文件,参数为空默认列出当前目录下的文件. 用法是:ls [选项] [目录] 常用的选项有 -a, –all 列出目录下的所有文件,包 ...
- myeclipse自动设置类和方法的注释(快捷键)
类的注释 第一步:找到Window→Preferences→Java→Code Style→Code Templates→Comments→Types 第二步:编辑Pattern,我一般用的模板 /* ...
- 将 ssh (security shell) 移植到 vxworks
openssh 依赖 openssl,这两个东西主要针对posix系统,移植到 vxworks 等实时系统有相当的难度. 可以考虑移植如下的库(ssh server): dropbear: https ...
- a=a+1背后的内存模型和CPU高速缓存
学过JAVA的人都知道,程序运行过程中的临时数据,都是从外部存储设备调入内存(物理内存)中,再进行读写操作的.而计算机在执行程序时,对程序的每条指令都是在CPU中执行的,而指令的执行,势必涉及到对数据 ...