接口调整
This commit is contained in:
		
							parent
							
								
									9b3c6083f9
								
							
						
					
					
						commit
						3be70555b4
					
				| @ -1,41 +0,0 @@ | |||||||
| import axios from '@/utils/axios' |  | ||||||
| import { type AxiosResponse } from 'axios' |  | ||||||
| 
 |  | ||||||
| export interface LoginInputDto { |  | ||||||
|   email: string |  | ||||||
|   password: string |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export interface CreateUserDto { |  | ||||||
|   email: string |  | ||||||
|   password: string |  | ||||||
|   username?: string |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export interface Token { |  | ||||||
|   accessToken: string |  | ||||||
|   refreshToken: string |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export interface TokenRefreshPayload { |  | ||||||
|   refreshToken: string |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export async function register(data: CreateUserDto) { |  | ||||||
|   return axios.post<Token>('/api/auth/register', data) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export async function login(data: LoginInputDto) { |  | ||||||
|   return axios.post<Token>('/api/auth/login', data) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| let refreshing: Promise<AxiosResponse<Token>> | null |  | ||||||
| 
 |  | ||||||
| export async function refreshToken(data: TokenRefreshPayload) { |  | ||||||
|   if (!refreshing) { |  | ||||||
|     refreshing = axios.put<Token>('/api/auth/token', data).finally(() => { |  | ||||||
|       refreshing = null |  | ||||||
|     }) |  | ||||||
|   } |  | ||||||
|   return refreshing |  | ||||||
| } |  | ||||||
| @ -1,2 +1 @@ | |||||||
| export * as auth from './auth' |  | ||||||
| export * as user from './user' | export * as user from './user' | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								src/api/user.interface.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/api/user.interface.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | export interface LoginInputDto { | ||||||
|  |   email: string | ||||||
|  |   password: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface CreateUserDto { | ||||||
|  |   email: string | ||||||
|  |   password: string | ||||||
|  |   username?: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface Token { | ||||||
|  |   accessToken: string | ||||||
|  |   refreshToken: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface TokenRefreshPayload { | ||||||
|  |   refreshToken: string | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface User { | ||||||
|  |   id: string | ||||||
|  |   email: string | ||||||
|  |   username: string | null | ||||||
|  |   password: string | ||||||
|  |   /** @format date-time */ | ||||||
|  |   createdAt: string | ||||||
|  |   /** @format date-time */ | ||||||
|  |   updatedAt: string | ||||||
|  | } | ||||||
| @ -1,16 +1,31 @@ | |||||||
| import axios from '@/utils/axios' | import axios from '@/utils/axios' | ||||||
|  | import { type AxiosResponse } from 'axios' | ||||||
|  | import { | ||||||
|  |   LoginInputDto, | ||||||
|  |   CreateUserDto, | ||||||
|  |   Token, | ||||||
|  |   TokenRefreshPayload, | ||||||
|  |   User, | ||||||
|  | } from './user.interface' | ||||||
| 
 | 
 | ||||||
| export interface UserEntity { | export async function register(data: CreateUserDto) { | ||||||
|   id: string |   return axios.post<Token>('/api/users', data) | ||||||
|   email: string | } | ||||||
|   username: string | null | 
 | ||||||
|   password: string | export async function login(data: LoginInputDto) { | ||||||
|   /** @format date-time */ |   return axios.post<Token>('/api/users/token', data) | ||||||
|   createdAt: string | } | ||||||
|   /** @format date-time */ | 
 | ||||||
|   updatedAt: string | let refreshing: Promise<AxiosResponse<Token>> | null | ||||||
|  | export async function refreshToken(data: TokenRefreshPayload) { | ||||||
|  |   if (!refreshing) { | ||||||
|  |     refreshing = axios.put<Token>('/api/users/me/token', data).finally(() => { | ||||||
|  |       refreshing = null | ||||||
|  |     }) | ||||||
|  |   } | ||||||
|  |   return refreshing | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function getUserInfo() { | export async function getUserInfo() { | ||||||
|   return axios.get<UserEntity>('/api/users/me') |   return axios.get<User>('/api/users/me') | ||||||
| } | } | ||||||
|  | |||||||
| @ -26,7 +26,7 @@ export default function Login() { | |||||||
|       // password: yup.passwordSchema,
 |       // password: yup.passwordSchema,
 | ||||||
|     }), |     }), | ||||||
|     onSubmit: async (values) => { |     onSubmit: async (values) => { | ||||||
|       const res = await api.auth.login(values) |       const res = await api.user.login(values) | ||||||
|       localStorage.setItem('accessToken', res.data.accessToken) |       localStorage.setItem('accessToken', res.data.accessToken) | ||||||
|       localStorage.setItem('refreshToken', res.data.refreshToken) |       localStorage.setItem('refreshToken', res.data.refreshToken) | ||||||
|       router.push('/') |       router.push('/') | ||||||
|  | |||||||
| @ -26,7 +26,7 @@ export default function Register() { | |||||||
|       password: yup.passwordSchema, |       password: yup.passwordSchema, | ||||||
|     }), |     }), | ||||||
|     onSubmit: async (values) => { |     onSubmit: async (values) => { | ||||||
|       const res = await api.auth.register(values) |       const res = await api.user.register(values) | ||||||
|       localStorage.setItem('accessToken', res.data.accessToken) |       localStorage.setItem('accessToken', res.data.accessToken) | ||||||
|       localStorage.setItem('refreshToken', res.data.refreshToken) |       localStorage.setItem('refreshToken', res.data.refreshToken) | ||||||
|       router.push('/') |       router.push('/') | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user