

前端开发中,后端未就绪、接口不稳定或联调周期长,都会拖慢交付。接口 Mock 能在“接口契约可用、数据可控”的前提下并行开发、回归测试与演示。选型关键在于:是否需要接口管理与协作、是否需要可视化平台、是否要与 API 设计/测试集成。
npm i -D mockjsimport Mock from 'mockjs'
Mock.mock('/api/user', 'get', {
code: 0,
'data|1': [{
id: '@id',
name: '@cname',
avatar: '@image(64x64)',
age: '@integer(18,40)'
}]
})
Mock.mock(/\/api\/list\?page=\d+/, 'get', {
code: 0,
'list|10': [{ id: '@id', title: '@ctitle(5,15)', date: '@date' }]
})// vite.config.ts 片段
import { defineConfig } from 'vite'
import Mock from 'mockjs'
export default defineConfig({
server: {
middlewareMode: true,
setup: ({ middlewares }) => {
middlewares.use('/api/user', (req, res) => {
const data = Mock.mock({ code: 0, data: { id: '@id', name: '@cname' } })
res.setHeader('Content-Type', 'application/json')
res.end(JSON.stringify(data))
})
}
}
})https://mock.example.com/mock/{projectId}/{namespace}。baseURL):import axios from 'axios'
const isMock = import.meta.env.VITE_USE_MOCK === 'true'
const baseURL = isMock
? 'https://mock.example.com/mock/12345/app'
: 'https://api.example.com'
export const http = axios.create({ baseURL }){
"code": 0,
"list|10": [
{ "id": "@id", "title": "@ctitle(5,10)", "status|1": ["open","closed"] }
]
}https://api.apifox.cn/m1/{projectId},也可启动本地 Mock 服务。baseURL 与鉴权变量。import axios from 'axios'
const env = import.meta.env.MODE // dev/test/prod
const endpoints = {
dev: 'https://api.apifox.cn/m1/98765',
test: 'https://test.api.example.com',
prod: 'https://api.example.com'
}
export const http = axios.create({ baseURL: endpoints[env] })# .env.dev
VITE_USE_MOCK=true
VITE_API_BASE=https://api.apifox.cn/m1/98765
# .env.prod
VITE_USE_MOCK=false
VITE_API_BASE=https://api.example.com// src/http.ts
import axios from 'axios'
const http = axios.create({ baseURL: import.meta.env.VITE_API_BASE })
http.interceptors.response.use(
(res) => res.data,
(err) => Promise.reject(err)
)
export default httpMock.js 强在“就地造数与拦截”、Easy Mock 强在“可视化管理与分享”、Apifox 强在“以接口定义为中心的一体化协作”。以契约驱动 Mock、用环境变量切换、用测试集校验,是稳定工程化的关键。