团队冲刺个人博客——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'

posted @ 2026-05-15 22:33  Ceoberus  阅读(6)  评论(0)    收藏  举报