axios
基于http客户端的promise,面向浏览器和nodejs
特点
- 从浏览器中创建 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>
为了解决post默认使用的是x-www-from-urlencoded 去请求数据,导致请求参数无法传递到后台,所以还需要安装一个插件QS
$ npm install qs
一个命令全部解决
$ npm install --save axios vue-axios qs
开始使用
在main.js中引入
import axios from 'axios'
import qs from 'qs'
Vue.prototype.$axios= Axios
Vue.prototype.$qs = qs
axios基础配置
// axios 配置
axios.defaults.timeout = 5000
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
axios.defaults.baseURL = url
// 这里的url指接口地址
将请求数据封装在api.js内
封装Post请求
export function Post (url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(response => {
if (response.data.status === 200) {
resolve(response.data)
} else {
Toast({
message: response.data.msg
})
}
}, err => {
reject(err)
Toast({
message: '操作异常'
})
})
.catch((error) => {
reject(error)
Toast({
message: '操作异常'
})
})
})
}
封装get请求
export function Get (url, params) {
return new Promise((resolve, reject) => {
axios.get(url, params)
.then(response => {
if (response.status === 200) {
resolve(response.data)
} else {
Toast({
message: response.data
})
}
}, err => {
reject(err)
Toast({
message: '操作异常'
})
})
.catch((error) => {
reject(error)
Toast({
message: '操作异常'
})
})
})
}
export default {
register (params) {
// 注册
return Post('/user/register', params)
}
}
post请求示例
在main.js内进行配置后全局即可引用
Vue.prototype.$api = api
在调用接口的.vue页面内引入
import api from '../../assets/js/api'
let code = this.$qs.stringify({
number: this.phone
})
api.register(code)
.then((res) => {
console.log(res)
})