axios封装和config设置

This commit is contained in:
pixelqm
2019-09-11 23:13:50 +08:00
parent ad986b04cb
commit ccefb35790
8 changed files with 191 additions and 9 deletions
+13
View File
@@ -0,0 +1,13 @@
import service from '@/utils/request'
// @Summary 用户登录
// @Produce application/json
// @Param data body {userName:"string",passWord:"string"}
// @Router /base/login [post]
export const login = (data) => {
service({
url: "/base/login",
method: 'post',
data: data
})
}
+2 -2
View File
@@ -2,7 +2,7 @@ import Vue from 'vue'
import Vuex from 'vuex'
import VuexPersistence from 'vuex-persist'
import { User } from "@/store/module/user"
import { user } from "@/store/module/user"
Vue.use(Vuex)
@@ -12,7 +12,7 @@ const vuexLocal = new VuexPersistence({
})
export const store = new Vuex.Store({
modules: {
User
user
},
plugins: [vuexLocal.plugin]
})
+2 -2
View File
@@ -18,9 +18,9 @@ export const user = {
}
},
actions: {
AsyncSetUserInfo({ commit }, loginInfo) {
// AsyncSetUserInfo({ commit }, loginInfo) {
}
// }
},
getters: {
userName(state) {
+56
View File
@@ -0,0 +1,56 @@
import axios from 'axios'; // 引入axios
import { Message } from 'element-ui';
import { store } from '@/store/index'
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API,
timeout: 5000
})
//http request 拦截器
service.interceptors.request.use(
config => {
const token = store.getters['user/token']
config.data = JSON.stringify(config.data);
config.headers = {
'Content-Type': 'application/json',
'x-token': token
}
return config;
},
error => {
Message({
showClose: true,
message: error,
type: 'error'
})
return Promise.reject(error);
}
);
//http response 拦截器
service.interceptors.response.use(
response => {
if (response.data.success) {
return response.data
} else {
Message({
showClose: true,
message: response.data.msg,
type: 'error'
})
return Promise.reject(response.data.msg)
}
},
error => {
Message({
showClose: true,
message: error,
type: 'error'
})
return Promise.reject(error)
}
)
export default service
+9 -5
View File
@@ -2,7 +2,7 @@
<el-container class="login-box">
<el-header>登录</el-header>
<el-main>输入框在这里
<el-button>
<el-button @click="login">
登录
</el-button>
</el-main>
@@ -11,15 +11,19 @@
<script>
import {mapState, mapGetters, mapActions , mapMutations} from 'vuex'
import {login} from '@/api/user'
export default {
name:"Login",
computed:{
...mapGetters("User",["userName"]),
...mapState("User",["userName"])
...mapGetters("user",["userInfo"]),
...mapState("user",["token"])
},
methods: {
...mapActions("User",["AsyncSetUserName"]),
...mapMutations("User",["setUserName"])
...mapActions("user",["AsyncSetUserInfo"]),
...mapMutations("user",["setUserInfo"]),
login(){
login({userName:"string1",passWord:"string"})
}
},
}
</script>