vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现
axios是一个基本Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,
同时不再对vue-resource进行更新和维护
axios发送AJAX请求
安装axios
npm install axios -S
基本用法
- axios([options])
- axios.get(url[,options]) 传参方式:1.通过url 传参 2.通过params选项传参
- axios.post(url,data,[options]) axios默认发送数据时,数据格式是Request Payload(也就是对象传入,后台接收json数据),并非我们常用的Form Data格式(字符串拼接参数的形式传入),所以参数必须要以键值对形式传递,不能以json形式传参,传参方式:
1. 自己拼接为键值
2. 使用transformRequest,在请求发送前将请求数据进行转换
3. 如果使用模块化开发,可以使用qs模块进行转换
另外axios不是全局组件,需要使用时,在每个文件都要引入,如果想达到全局效果,
可以在main.js 用原型进行绑定Vue.prototype.$http=Axios
Proxy代理
对于前后端分离模式下,前端请求后端存在跨域问题,除了后端主动设置允许跨域请求的类型,
前端也可使用proxy代理来转发请求实现跨域
项目准备
1 vue init webpack proxy-demo
2 cd proxy-demo
3 npm install
4 npm install axios -S
5 npm run dev
在下面文件下的proxyTable配置代理
proxyTable: {
// 开发环境dev
'/flask-api': {//前端路由匹配模式
target: 'http://hzb.nat300.top', //后端请求服务域名和端口
changeOrigin: true, //设置请求头
pathRewrite: {
'^/flask-api': '/cache' //路径重写 前端/flask-api 对应 后端/
},
}
就拿login举例,前端localhost:8080/flask-api/login -->
后端http://localhost:9001/login,而在用axios发送请求时,
不用写localhost:8080,直接写/flask-api/login就可以了
其他
axios本身并不支持发送跨域请求,需要使用vue-resource发送跨域请求
安装
npm install vue-resource -S
基本用法
使用this.$http发送请求
this.$http.get(url, [options])
this.$http.head(url, [options])
this.$http.delete(url, [options])
this.$http.jsonp(url, [options])
this.$http.post(url, [body], [options])
this.$http.put(url, [body], [options])
this.$http.patch(url, [body], [options])