https://www.cnblogs.com/wuhuacong/p/12986166.html
1.axios axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范。在这里我们只需要知道它是非常强大的网络请求处理库,且得到广泛应用即可
(1)post方法
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
(2)get请求
axios
.get('http://rap2api.taobao.org/app/mock/23080/resources/search',{
params: {
id: 5
}
})
.then(res => {
console.log('数据是:', res);
})
.catch((e) => {
console.log('获取数据失败');
});
2.(1)一般前端调用,通过前端API类的封装,即可发起对后端API接口的调用,request是对Axios的简单封装,主要就是拦截注入一些登录信息和一些响应的错误处理而已。返回是一个JSON数据集合
import request from '@/utils/request'
export function GetProductList (id) { //方法名 (params)
return request({
url: '/abp/services/app/User/Get', //与后端协调好的接口
method: 'get',
params: {id} //params
})
}
(2)JS处理部分,可以直接引入API进行请求数据
import{ GetProductList }from'@/api/product' //project是api文件夹中的product.js文件,vue中通常写下
(3)然后我们就可以在method方法里面定义一个获取API数据的方法了。
methods: {
getlist(type) {
GetProductList({ type: type }).then(response => {
const { data } = response
this.productlist = data.list
this.listLoading =false })
}
这种调用是最直接的API调用,没有引入Store模块中封装的Action或者Mutation进行异步或者同步的处理。一般情况下直接使用这种方式比较简洁,因为大多数页面处理或者组件处理,不需要对数据进行全局状态的存储处理,也就是不需要进行全局Store对象的处理了。
如果我们需要在全局存储对应的信息,那么就需要引入Store模块中对API调用的封装了,包括Action或者Mutation的处理。如果我们需要对产品列表等数据进行全局状态的存储,那么我们可以考虑创建一个对应Store目录下的模块,如product.js,来管理Action、Mutation和State等信息。如果引入了Store模块的业务类,那么在界面视图中调用代码则修改为调用对应的Action或者Mutation了。
methods: {
getlist(type) {
// GetProductList({ type: type }).then(response => {
// const { data } = response
// this.productlist = data.list
// this.listLoading = false
// })
this.$store.dispatch('product/getProductList', { type: type }).then(data => {
this.productlist = data.list
// this.loading = false
}).catch((e) => {
// this.loading = false
})
}
一般情况下在视图模块中使用API的类调用即可,不需要累赘的每个业务模块,都创建一个Store的模块类进行相应的管理,只有在这些状态数据需要在多个页面或者组件中需要共享的时候,才考虑引入Store模块类进行细化管理。如果需要创建对应业务模块的Store状态管理模块,那么需要创建对应的模块类,如前面说到的product.js类文件。