feat: 新增退出登录接口,新增全局接口封装,修改登录接口内容

This commit is contained in:
奔跑的面条
2022-05-21 17:31:01 +08:00
parent 92e1ec05d2
commit b6143bc75e
15 changed files with 161 additions and 35 deletions
+9
View File
@@ -0,0 +1,9 @@
import { ModuleTypeEnum } from '@/enums/httpEnum'
// 接口白名单(免登录)
export const fetchAllowList = [
`${ModuleTypeEnum.SYSTEM}/login`
]
// 接口黑名单
export const fetchBlockList = []
+32 -6
View File
@@ -1,8 +1,12 @@
import axios, { AxiosResponse, AxiosRequestConfig } from 'axios'
import { ResultEnum } from "@/enums/httpEnum"
import { ErrorPageNameMap } from "@/enums/pageEnum"
import { redirectErrorPage } from '@/utils'
import { ResultEnum, RequestHttpHeaderEnum } from "@/enums/httpEnum"
import { PageEnum, ErrorPageNameMap } from "@/enums/pageEnum"
import { StorageEnum } from '@/enums/storageEnum'
import { axiosPre } from '@/settings/httpSetting'
import { SystemStoreEnum, SystemStoreUserInfoEnum } from '@/store/modules/systemStore/systemStore.d'
import { redirectErrorPage, getLocalStorage, routerTurnByName } from '@/utils'
import { fetchAllowList } from './axios.config'
import includes from 'lodash/includes'
interface MyResponseType {
code: number;
@@ -17,7 +21,15 @@ const axiosInstance = axios.create({
axiosInstance.interceptors.request.use(
(config: AxiosRequestConfig) => {
config.headers = {}
// 白名单校验
if (includes(fetchAllowList, config.url)) return config
// 获取 token
const info = getLocalStorage(StorageEnum.GO_SYSTEM_STORE)
// 重新登录
if (!info) return routerTurnByName(PageEnum.BASE_LOGIN_NAME)
config.headers = {
[RequestHttpHeaderEnum.TOKEN]: info[SystemStoreEnum.USER_INFO][SystemStoreUserInfoEnum.USER_TOKEN] || ''
}
return config
},
(error: AxiosRequestConfig) => {
@@ -29,9 +41,23 @@ axiosInstance.interceptors.request.use(
axiosInstance.interceptors.response.use(
(res: AxiosResponse) => {
const { code } = res.data as { code: number }
if (code === ResultEnum.DATA_SUCCESS) return Promise.resolve(res.data)
// 成功
if (code === ResultEnum.DATA_SUCCESS) {
return Promise.resolve(res.data)
}
// 登录过期
if (code === ResultEnum.SERVER_FORBIDDEN) {
routerTurnByName(PageEnum.BASE_LOGIN_NAME)
return Promise.reject(res.data)
}
// 重定向
if (ErrorPageNameMap.get(code)) redirectErrorPage(code)
if (ErrorPageNameMap.get(code)) {
redirectErrorPage(code)
}
return Promise.resolve(res.data)
},
(err: AxiosResponse) => {
+5 -4
View File
@@ -1,25 +1,26 @@
import axiosInstance from './axios'
import { RequestHttpEnum, ContentTypeEnum } from '@/enums/httpEnum'
export const get = (url: string) => {
export const get = (url: string, params?: object) => {
return axiosInstance({
url: url,
method: RequestHttpEnum.GET,
params: params,
})
}
export const post = (url: string, params: object, headersType?: string) => {
export const post = (url: string, data?: object, headersType?: string) => {
return axiosInstance({
url: url,
method: RequestHttpEnum.POST,
data: params,
data: data,
headers: {
'Content-Type': headersType || ContentTypeEnum.JSON
}
})
}
export const del = (url: string, params: object) => {
export const del = (url: string, params?: object) => {
return axiosInstance({
url: url,
method: RequestHttpEnum.DELETE,
+3
View File
@@ -0,0 +1,3 @@
import { http } from '@/api/http'
import { httpErrorHandle } from '@/utils'
import { RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
+13
View File
@@ -0,0 +1,13 @@
import { http } from '@/api/http'
import { httpErrorHandle } from '@/utils'
import { RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
// * 新增项目
export const createProjectApi = async (data: object) => {
try {
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.SYSTEM}/project/create`, data);
return res;
} catch {
httpErrorHandle();
}
}
+23
View File
@@ -0,0 +1,23 @@
import { http } from '@/api/http'
import { httpErrorHandle } from '@/utils'
import { RequestHttpEnum, ModuleTypeEnum } from '@/enums/httpEnum'
// * 登录
export const loginApi = async (data: object) => {
try {
const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.SYSTEM}/login`, data);
return res;
} catch {
httpErrorHandle();
}
}
// * 登出
export const logoutApi = async () => {
try {
const res = await http(RequestHttpEnum.GET)(`${ModuleTypeEnum.SYSTEM}/logout`);
return res;
} catch(err) {
httpErrorHandle();
}
}