Skip to content

API Integration

All API requests are centralized in src/api/. Pages must not contain inline requests.

Naming Convention

fetch + Action + Resource:

ts
import request from '@/utils/http'

// List query — POST
export function fetchGetUserList(params: any) {
  return request.post<any>({ url: '/admin/system/user/list', params })
}

// Create/Update — POST with data
export function fetchUpdateUser(data: any) {
  return request.post<any>({ url: '/admin/system/user/update', data })
}

// Delete — DELETE
export function fetchDeleteUser(id: string) {
  return request.del<any>({ url: `/admin/system/user/${id}` })
}

// GET query
export function fetchGetRoleSelect() {
  return request.get<any[]>({ url: '/admin/system/role/select' })
}

Typed APIs

ts
export interface SysLogListRequest {
  queryDate: string
  level?: string
  pageIndex?: number
  pageSize?: number
}

export interface SysLogListResponse {
  total: number
  data: SysLogItem[]
}

export function fetchLogList(params: SysLogListRequest) {
  return request.post<SysLogListResponse>({
    url: '/admin/system/log/list',
    params
  })
}

Types Can Use any

During rapid development, any is acceptable to avoid blocking:

ts
export function fetchGetUserList(params: any) {
  return request.post<any>({ url: '/admin/system/user/list', params })
}

URL Convention

/admin/module/resource/action
│       │       │        │
│       │       │        └── Action (list/save/...)
│       │       └────────── Resource name
│       └────────────────── Business module
└────────────────────────── Prefix (admin/app/common)