Files

117 lines
3.2 KiB
TypeScript
Raw Permalink Normal View History

2026-05-23 14:05:22 +08:00
import { delay, http, HttpResponse } from '@lingshu/vite-plugin-msw/msw';
function uuid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0;
const v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
const users = [
{ name: 'zhangsan', age: 18, id: uuid() },
{ name: 'lisi', age: 19, id: uuid() },
];
const handlers = [
http.get('/api/users', () => {
return HttpResponse.json({
code: 200,
message: 'success',
data: { list: users },
});
}),
http.post('/api/info', async ({ request }) => {
const data: any = await request.json();
let id = '';
if (data instanceof Object) {
id = data.id;
}
await delay(1000);
if (id) {
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
return HttpResponse.json({
name: users[index].name,
age: users[index].age,
id,
});
} else {
return HttpResponse.json(
{ code: 40002, message: 'id不存在' },
{ status: 500 },
);
}
} else {
return HttpResponse.json(
{ code: 40001, message: 'id不能为空' },
{ status: 500 },
);
}
}),
http.post('/api/users', async ({ request }) => {
await delay(1000);
const data: any = await request.json();
if (data instanceof Object && data.name && data.age) {
const user = { name: data.name, age: data.age, id: uuid() };
users.push(user);
return HttpResponse.json({ code: 200, message: '添加成功', data: user });
} else {
return HttpResponse.json(
{ code: 40003, message: '无效的用户信息' },
{ status: 500 },
);
}
}),
http.put('/api/users', async ({ request }) => {
await delay(1000);
const data: any = await request.json();
if (data instanceof Object && data.id && data.name && data.age) {
const index = users.findIndex(user => user.id === data.id);
if (index !== -1) {
users[index] = {
name: data.name,
age: data.age,
id: data.id,
};
return HttpResponse.json({ code: 200, message: '修改成功' });
} else {
return HttpResponse.json(
{ code: 40002, message: 'id不存在' },
{ status: 500 },
);
}
} else {
return HttpResponse.json(
{ code: 40003, message: '无效的用户信息' },
{ status: 500 },
);
}
}),
http.delete('/api/users', async ({ request, params }) => {
await delay(1000);
console.log('delete', request, params);
const id: any = await request.text();
if (id) {
const index = users.findIndex(user => user.id === id);
if (index !== -1) {
users.splice(index, 1);
return HttpResponse.json({ code: 200, message: '删除成功' });
} else {
return HttpResponse.json(
{ code: 40002, message: 'id不存在' },
{ status: 500 },
);
}
} else {
return HttpResponse.json(
{ code: 40001, message: 'id不能为空' },
{ status: 500 },
);
}
}),
];
export default handlers;