axios request.js
// 这个是Node中向外暴露成员的方式
// module.exports = {}
// 在ES6中,也通过规范的形式,规定了ES6如何导入和导出模块
// ES6中,使用 import 模块名称 from '模块标识符' import '模块路径'两种方式导入模块
// ES6中,使用export default 和export向外暴露成员.
var info = {
name: '张三',
age: 23
}
export default info
// 注意:export default 向外暴露的成员,可以用任意的变量接收
// 注意:在一个模块中,export default只允许向外暴露一次
// 注意: 在一个模块中, 可以同时使用export default和export
export var title = '标题'
export var content = '哈哈哈哈'
// 注意:使用export向外暴露成员,只能使用{ }的形式去接收,叫做【按需引入】,按需引入是开发中非常常用的方式
// 注意:export可以向外暴露多个成员,同时,如果某些成员,我们在import的时候,不需要,则可以不在 { } 中定义
// 注意:使用export导出的成员,必须严格按照export导出时候的名称,来使用 { }接收
// 注意:使用export导出的成员,如果就想换个名字接收,可以使用as 起个别名
// Node中,引入使用的是var 名称 = require('模块标识符')
封装的axios to request.js For ElementUI
import axios from 'axios'
import { Message } from 'element-ui'
const service = axios.create({
baseURL: '/',
timeout: 5000 // 默认请求超时时间
})
/**
* request 拦截器
* 可以在请求发送前对请求进行一些处理
* 如:统一在请求头上加上token
* 对请求参数进行统一加密
* 等等
*/
service.interceptors.request.use(
config => {
return config
},
error => {
// 请求异常了
Message({
type: 'error',
message: '系统异常,请及时联系管理员'
})
return Promise.reject(error)
}
)
/**
* response 拦截器
* 可以在接口响应之后,页面获取到响应结果之前
* 对响应结果统一进行处理
* 如:对返回结果进行解密
*/
service.interceptors.response.use(
response => {
const res = response.data
if (res.code === 200) {
// code是200的情况,表示接口是通的,直接返回res
return res
} else {
// else:非200的情况,表示接口异常
Message({
type: 'error',
message: res.msg
})
}
},
error => {
// 请求报错的情况下(http请求报错)
Message({
type: 'error',
message: res.msg
})
}
)
export default service