From 1f5f9cd6bc9c775f477116e143ec1c0cc5ad30f4 Mon Sep 17 00:00:00 2001 From: hujiabin Date: Wed, 20 Jul 2022 16:08:00 +0800 Subject: [PATCH] =?UTF-8?q?request=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/Request.ts | 69 +++++++++++++++++++++++++++ src/utils/Url.ts | 9 +--- src/utils/login-request.ts | 52 -------------------- src/views/admin/pages/home/home.ts | 1 - src/views/admin/pages/login/login.ts | 1 - src/views/admin/store/user.ts | 21 ++++---- src/views/home/Common/Types.ts | 4 -- src/views/home/main-app.ts | 1 - src/views/home/pages/home/home.ts | 1 - src/views/home/pages/layout/layout.ts | 54 +++++++++++++-------- src/views/home/pages/login/login.ts | 8 ++-- src/views/home/pages/login/login.vue | 2 +- src/views/home/store/user.ts | 1 - src/views/wap/pages/home/home.ts | 1 - src/views/wap/pages/layout/layout.ts | 1 - src/views/wap/pages/login/login.ts | 1 - 16 files changed, 119 insertions(+), 108 deletions(-) create mode 100644 src/utils/Request.ts delete mode 100644 src/utils/login-request.ts diff --git a/src/utils/Request.ts b/src/utils/Request.ts new file mode 100644 index 0000000..500d4ce --- /dev/null +++ b/src/utils/Request.ts @@ -0,0 +1,69 @@ +import axios from 'axios'; +import store from "@/views/home/store/index"; +import router from '@/views/home/router' + +// 创建axios实例,设置配置得默认值 +// const instance = axios.create({ +// baseUrl:'https://market.cebg.games', // 这里写接口的http地址, +// timeout: 5000, // 设置请求超时的默认值 +// }) +let apiHost = process.env.NODE_ENV !== 'production' ? process.env.VUE_APP_API_HOST : document.location.host; +let scheme = document.location.protocol; +const instance = axios.create({ + baseURL: scheme + "//" + apiHost + '/api/', + timeout: 5000 +}) + +// 设置请求拦截器 +instance.interceptors.request.use( + config => { + // 判断当前是否有token,有则在请求头上加上token + // console.log(store) + if (store.state.token) { + config.headers.Authorization = "Bearer " + store.state.token + } + return config + }, + error => { + // 请求错误进行拦截并返回错误信息 + // console.log(error) + return Promise.reject(error) + } +) +// 设置响应拦截 +instance.interceptors.response.use( + response => { + const res = response.data + return res + }, + error => { + let response = error.response; + if (response?.status === 401) { + store.commit('del_token') + router.replace('login') + } else { + console.error('response error', error.response); + } + return Promise.reject(error) + } +) +export default instance +export const Request = (method,Url:string,params? : object | any) => + instance({ + url: Url, + method: method, + params: params + }) +// export const Http_getNonce = (params) => +// instance({ +// url: 'http://127.0.0.1:8000/api/get-nonce', +// method: 'get', +// params: params +// }) +// +// export const Http_login = (data) => +// instance({ +// url: 'http://127.0.0.1:8000/api/metamask-login', +// method: 'post', +// params: data +// }) \ No newline at end of file diff --git a/src/utils/Url.ts b/src/utils/Url.ts index 8d1417b..df61721 100644 --- a/src/utils/Url.ts +++ b/src/utils/Url.ts @@ -2,9 +2,11 @@ * 前台地址 */ export default class Url { + //TODO 钱包登录 static readonly GET_NONCE : string = 'get-nonce' static readonly METAMASK_LOGIN : string = 'metamask-login' static readonly LOGOUT : string = "logout"; + static readonly HOME : string = "home"; // TODO 菜单 static readonly MENUS : string = "menu"; static readonly DELETE_MENU : string = "menu/%d"; @@ -13,10 +15,3 @@ export default class Url { } - -/** - * 后台地址 - */ -export class AdminUrl { - static readonly LOGIN : string = "login"; // 登陆 -} \ No newline at end of file diff --git a/src/utils/login-request.ts b/src/utils/login-request.ts deleted file mode 100644 index bf5e691..0000000 --- a/src/utils/login-request.ts +++ /dev/null @@ -1,52 +0,0 @@ -import axios from 'axios'; -import store from "@/views/home/store/index"; - -// 创建axios实例,设置配置得默认值 -// const instance = axios.create({ -// baseUrl:'https://market.cebg.games', // 这里写接口的http地址, -// timeout: 5000, // 设置请求超时的默认值 -// }) -const instance = axios.create({ - baseURL: 'https://market.cebg.games', - timeout: 5000 -}) - -// 设置请求拦截器 -instance.interceptors.request.use( - config => { - // 判断当前是否有token,有则在请求头上加上token - if (store.getters.token) { - config.headers.Authorization = "Bearer " + store.getters.token - } - // console.log(config) - return config - }, - error => { - // 请求错误进行拦截并返回错误信息 - // console.log(error) - return Promise.reject(error) - } -) -// 设置响应拦截 -instance.interceptors.response.use( - response => { - const res = response.data - return res - }, - error => { - return Promise.reject(error) - } -) -export const Http_getNonce = (params) => - instance({ - url: 'http://127.0.0.1:8000/api/get-nonce', - method: 'get', - params: params - }) - -export const Http_login = (data) => - instance({ - url: 'http://127.0.0.1:8000/api/metamask-login', - method: 'post', - params: data - }) \ No newline at end of file diff --git a/src/views/admin/pages/home/home.ts b/src/views/admin/pages/home/home.ts index a0914ea..3b39928 100644 --- a/src/views/admin/pages/home/home.ts +++ b/src/views/admin/pages/home/home.ts @@ -1,5 +1,4 @@ import { Component, Vue } from 'vue-property-decorator' -import Url, {AdminUrl} from "@/utils/Url"; import { State, Getter, diff --git a/src/views/admin/pages/login/login.ts b/src/views/admin/pages/login/login.ts index d7ec2e3..7f189b7 100644 --- a/src/views/admin/pages/login/login.ts +++ b/src/views/admin/pages/login/login.ts @@ -1,5 +1,4 @@ import { Component, Vue } from 'vue-property-decorator' -import Url from "@/utils/Url"; import { State, Getter, diff --git a/src/views/admin/store/user.ts b/src/views/admin/store/user.ts index 5dd889d..69cbe1f 100644 --- a/src/views/admin/store/user.ts +++ b/src/views/admin/store/user.ts @@ -1,6 +1,5 @@ import {ActionContext} from "vuex"; import Http, { ResponseErrorInterface, ResponseInterface } from "@/utils/Http"; -import {AdminUrl} from "@/utils/Url"; import Types from "@/views/admin/store/types"; import { User } from "@/interface/User"; @@ -19,16 +18,16 @@ export default { token : undefined }, actions : { - Login(context : ActionContext, form : any) { - return Http.post(AdminUrl.LOGIN, form).then((res : ResponseInterface) => { - console.log(res); - context.commit(Types.SET_USER_INFO, res.data); - context.commit(Types.SET_USER_TOKEN, res.data.access_token); - return Promise.resolve(res.data); - }).catch((err : ResponseErrorInterface) => { - return Promise.reject(err); - }) - }, + // Login(context : ActionContext, form : any) { + // return Http.post(AdminUrl.LOGIN, form).then((res : ResponseInterface) => { + // console.log(res); + // context.commit(Types.SET_USER_INFO, res.data); + // context.commit(Types.SET_USER_TOKEN, res.data.access_token); + // return Promise.resolve(res.data); + // }).catch((err : ResponseErrorInterface) => { + // return Promise.reject(err); + // }) + // }, }, mutations : { [Types.SET_USER_INFO](state : UserState, user : User) { diff --git a/src/views/home/Common/Types.ts b/src/views/home/Common/Types.ts index bc1f95a..e00f8f5 100644 --- a/src/views/home/Common/Types.ts +++ b/src/views/home/Common/Types.ts @@ -22,7 +22,3 @@ export interface ElTreeDataInterface { children : ElTreeDataInterface[] } -export enum EVENT_TYPE { - UPDATE_BREAD_ITEM = "UPDATE_BREAD_ITEM", - UPDATE_MY_PROJECT = "UPDATE_MY_PROJECT" -} \ No newline at end of file diff --git a/src/views/home/main-app.ts b/src/views/home/main-app.ts index e836351..f509952 100644 --- a/src/views/home/main-app.ts +++ b/src/views/home/main-app.ts @@ -1,5 +1,4 @@ import {Component, Mixins, Vue, Watch} from 'vue-property-decorator' -import Url, {AdminUrl} from "@/utils/Url"; import { State, Getter, diff --git a/src/views/home/pages/home/home.ts b/src/views/home/pages/home/home.ts index 16957b0..f3447a1 100644 --- a/src/views/home/pages/home/home.ts +++ b/src/views/home/pages/home/home.ts @@ -1,5 +1,4 @@ import { Component, Mixins, Vue, Watch } from 'vue-property-decorator' -import Url from "@/utils/Url"; import { State, Getter, diff --git a/src/views/home/pages/layout/layout.ts b/src/views/home/pages/layout/layout.ts index eb484a8..f988510 100644 --- a/src/views/home/pages/layout/layout.ts +++ b/src/views/home/pages/layout/layout.ts @@ -1,5 +1,4 @@ import { Component, Mixins, Vue, Watch } from 'vue-property-decorator' -import Url, { AdminUrl } from "@/utils/Url"; import { State, Getter, @@ -7,11 +6,14 @@ import { Mutation, } from "vuex-class"; import Types from "@/views/admin/store/types"; -import HomeParent, { BreadItem } from "@/views/home/Common/HomeParent"; -import { EVENT_TYPE, MenuInterface, ProjectInterface } from "@/views/home/Common/Types"; import { Route, RouteRecord } from "vue-router"; import { Menu } from "view-design"; +import HomeParent, { BreadItem } from "@/views/home/Common/HomeParent"; +import { MenuInterface, } from "@/views/home/Common/Types"; import store from "@/views/home/store"; +import { Request } from "@/utils/Request"; +import Url from "@/utils/Url"; +import {Message} from "element-ui"; @@ -23,26 +25,23 @@ export default class Layout extends HomeParent { public visible: boolean = false; public myMenus: MenuInterface[] = []; public routes: BreadItem[] = []; - public myProject: ProjectInterface[] = []; + public created() { this._getMyMenu() - // this._getMyProject() - // this.$bus.$on(EVENT_TYPE.UPDATE_BREAD_ITEM, this._updateRoutes.bind(this)); - // this.$bus.$on(EVENT_TYPE.UPDATE_MY_PROJECT, this._getMyProject.bind(this)); } - @Watch("$route", {immediate: true, deep: true}) - private _watchRoute(route: Route): void { - this.routes.length = 0; - route.matched.forEach((item: RouteRecord) => { - let ret: BreadItem = this.$router.resolve({name: item.name, params: route.params}); - ret.name = item.meta.title; - this.routes.push(ret); - // console.log(ret); - }); - } + // @Watch("$route", {immediate: true, deep: true}) + // private _watchRoute(route: Route): void { + // this.routes.length = 0; + // route.matched.forEach((item: RouteRecord) => { + // let ret: BreadItem = this.$router.resolve({name: item.name, params: route.params}); + // ret.name = item.meta.title; + // this.routes.push(ret); + // // console.log(ret); + // }); + // } public get isLogin() { @@ -52,13 +51,26 @@ export default class Layout extends HomeParent { public onDropdownEvent(name: string): void { switch (name) { case "logout" : this.logout();break; - // case "updateName" : this.updateName();break; + case "updateName" : this.updateName();break; } } - public logout() { - store.commit('del_token') - this.goPage("login"); + public async logout() { + const res:any = await Request('get',Url.LOGOUT) + if (res.code == 200){ + store.commit('del_token') + this.goPage("login"); + }else { + Message({ + message: res.message, + type: 'error', + duration: 2 * 1000 + }) + } + } + public async updateName(){ + const res:any = await Request('get','home') + // console.log(res) } diff --git a/src/views/home/pages/login/login.ts b/src/views/home/pages/login/login.ts index 5ac1ae5..311c037 100644 --- a/src/views/home/pages/login/login.ts +++ b/src/views/home/pages/login/login.ts @@ -4,8 +4,9 @@ import HomeParent from "@/views/home/Common/HomeParent"; import SvgIcon from '@/components/SvgIcon.vue' import { Message } from 'element-ui'; import Web3 from 'web3' -import {Http_getNonce, Http_login} from "@/utils/login-request"; +import { Request } from "@/utils/Request"; import store from "@/views/home/store"; +import Url from "@/utils/Url"; interface Window { @@ -97,11 +98,10 @@ export default class Login extends HomeParent { tips, net_id: chainId } - const res:any = await Http_login(authData) + const res:any = await Request('post',Url.METAMASK_LOGIN,authData) if (res.code == 200) { store.commit('set_token',res.data.token) - this.goPage("home"); } } @@ -111,7 +111,7 @@ export default class Login extends HomeParent { let nonce = store.getters.nonce if (!nonce) { let params = {account:this.account, net_id:this.chainId} - const res:any = await Http_getNonce(params); + const res:any = await Request('get',Url.GET_NONCE,params) store.commit('set_nonce',res.data) this.nonce = res.data } diff --git a/src/views/home/pages/login/login.vue b/src/views/home/pages/login/login.vue index e9e5ab5..1641446 100644 --- a/src/views/home/pages/login/login.vue +++ b/src/views/home/pages/login/login.vue @@ -1,6 +1,6 @@