117 lines
3.2 KiB
TypeScript
117 lines
3.2 KiB
TypeScript
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;
|