Skip to content

Commit 7a27d8b

Browse files
committed
封装请求返回的数据及在store请求接口
1 parent a9b2083 commit 7a27d8b

File tree

6 files changed

+95
-1
lines changed

6 files changed

+95
-1
lines changed

src/servers/User.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { $get } from '@/utils';
2+
class UserService {
3+
// 获取全部的用户
4+
public async getAllUser(): Promise<any> {
5+
return await $get('/user?pageSize=10&pageNumber=1');
6+
}
7+
}
8+
9+
export default new UserService();

src/store/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,11 @@ import Vuex from 'vuex';
33
import { viewStore } from './view';
44
Vue.use(Vuex);
55

6+
import user from './modules/user';
7+
68
export default new Vuex.Store({
79
modules: {
810
viewStore,
11+
user,
912
},
1013
});

src/store/modules/user.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import UserService from '@/servers/User';
2+
import { axiosResult } from '@/utils';
3+
4+
export default {
5+
namespaced: true,
6+
state: {},
7+
mutations: {},
8+
actions: {
9+
async getAllUserApi() {
10+
try {
11+
const { code, message, result } = await UserService.getAllUser();
12+
return axiosResult(result, code, message, true);
13+
} catch (e) {
14+
console.error(e);
15+
}
16+
},
17+
},
18+
};

src/utils/axios-result.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* @Description:封装数据请求返回的格式
3+
* @Author: 水痕
4+
* @Github: https://github.com/kuangshp
5+
* @Email: 332904234@qq.com
6+
* @Company:
7+
* @Date: 2019-08-21 13:04:57
8+
* @LastEditors: 水痕
9+
* @LastEditTime: 2019-08-21 13:22:22
10+
*/
11+
12+
/**
13+
* @param result 返回数据结果
14+
* @param code 返回的code
15+
* @param message 返回的消息
16+
* @param isObj 是否要以对象返回
17+
*/
18+
export const axiosResult = (
19+
result: any,
20+
code: number,
21+
message: string,
22+
isObj: boolean = false,
23+
): Promise<any> =>
24+
new Promise((resolve, reject) => {
25+
if (Object.is(code, 0)) {
26+
if (result) {
27+
isObj ? resolve({ result }) : resolve(result);
28+
} else {
29+
isObj ? resolve({ message }) : resolve(message);
30+
}
31+
} else {
32+
reject(message);
33+
}
34+
});

src/utils/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,6 @@ export * from './storage';
22
export * from './auth';
33
export * from './set-title';
44
export * from './axios-request';
5+
export * from './axios-method';
6+
export * from './axios-result';
57
export * from './data-type';

src/views/demo1/demo12/demo12.vue

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,43 @@
11
<template>
22
<div class="demo12">
33
<h1>我是demo12页面</h1>
4+
<el-button
5+
type="primary"
6+
@click="vuexGetUser"
7+
>使用vuex方法获取全部用户</el-button>
8+
<el-button
9+
type="primary"
10+
@click="getAllUserApi"
11+
>直接获取全部用户</el-button>
412
</div>
513
</template>
614

715
<script lang="ts">
816
import { Component, Vue } from 'vue-property-decorator';
17+
import { Action } from 'vuex-class';
18+
import axios from 'axios';
919
@Component({
1020
components: {},
1121
})
12-
export default class Demo12 extends Vue { }
22+
export default class Demo12 extends Vue {
23+
@Action('user/getAllUserApi') private getAllUserApi!: () => Promise<any>;
24+
25+
/**
26+
* 直接在vue组件中使用axios请求接口
27+
*/
28+
private async getUser() {
29+
const result = await axios.get('/user?pageSize=10&pageNumber=1');
30+
console.log(result);
31+
}
32+
33+
/**
34+
* 通过store统一调用接口
35+
*/
36+
private async vuexGetUser() {
37+
const { result } = await this.getAllUserApi();
38+
console.log(result);
39+
}
40+
}
1341
</script>
1442
<style lang="less">
1543
</style>

0 commit comments

Comments
 (0)