团队冲刺个人博客——5.15
昨天基本上完成所有前端API模块封装,耗时约3小时。主要把企业、部门、岗位、人员、用户、角色、权限、日志、通知这些模块的接口都写完了,每个模块都定义了数据类型和相应的接口方法,但是前端传过去的日期格式跟后端期望的不太一样,后端收不到;还有分页查询的参数名前后端命名不一致,导致查了半天才查到问题
今天就跟后端队友一起联调主要接口,统一了日期格式化方式,把所有接口的参数跟后端对齐一遍,把后端给的接口文档跟前端的plug.md对应起来,修改了 src/api/index.ts 中的基础URL,更新为后端的真实地址 http://localhost:3000/api
import axios, { AxiosRequestConfig } from 'axios'
const BASE_URL = 'http://localhost:3000/api'
interface ApiInstance {
get<T = unknown>(url: string, config?: AxiosRequestConfig): Promise
post<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise
put<T = unknown>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise
delete<T = unknown>(url: string, config?: AxiosRequestConfig): Promise
}
const axiosInstance = axios.create({
baseURL: BASE_URL,
timeout: 10000,
})
axiosInstance.interceptors.request.use(
(config) => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = Bearer ${token}
}
return config
},
(error) => {
return Promise.reject(error)
}
)
axiosInstance.interceptors.response.use(
(response) => {
return response.data
},
(error) => {
if (error.response?.status === 401) {
localStorage.removeItem('token')
window.location.href = '/login'
}
return Promise.reject(error)
}
)
const api: ApiInstance = axiosInstance as ApiInstance
export interface PageResult
records: T[]
total: number
current: number
size: number
}
export interface BaseResponse
code: number
message: string
data: T
}
export { api }
export * from './enterprise'
export * from './department'
export * from './position'
export * from './personnel'
export * from './user'
export * from './role'
export * from './log'
export * from './notification'
export * from './auth'
export * from './sysInfo'

浙公网安备 33010602011771号