Browse Source

feat: add API verification script and update package.json

master
dark 1 month ago
parent
commit
89bc5f0a20
  1. 3
      frontend/react-shadcn/pc/package.json
  2. 142
      frontend/react-shadcn/pc/scripts/verify-api.cjs

3
frontend/react-shadcn/pc/package.json

@ -9,7 +9,8 @@
"lint": "eslint .", "lint": "eslint .",
"preview": "vite preview", "preview": "vite preview",
"test:e2e": "tests/run-tests.bat", "test:e2e": "tests/run-tests.bat",
"test:check": "node tests/check-services.cjs" "test:check": "node tests/check-services.cjs",
"verify:api": "node scripts/verify-api.cjs"
}, },
"dependencies": { "dependencies": {
"class-variance-authority": "^0.7.1", "class-variance-authority": "^0.7.1",

142
frontend/react-shadcn/pc/scripts/verify-api.cjs

@ -0,0 +1,142 @@
/**
* API 对接验证脚本
* 运行: node scripts/verify-api.cjs
*/
const http = require('http');
const API_BASE_URL = 'localhost';
const API_PORT = 8888;
function makeRequest(method, path, body = null, token = null) {
return new Promise((resolve) => {
const options = {
hostname: API_BASE_URL,
port: API_PORT,
path: `/api/v1${path}`,
method: method,
headers: {
'Content-Type': 'application/json',
},
};
if (token) {
options.headers['Authorization'] = `Bearer ${token}`;
}
const req = http.request(options, (res) => {
let data = '';
res.on('data', (chunk) => (data += chunk));
res.on('end', () => {
try {
const json = JSON.parse(data);
resolve({
success: res.statusCode === 200,
status: res.statusCode,
data: json,
});
} catch {
resolve({
success: res.statusCode === 200,
status: res.statusCode,
data: data,
});
}
});
});
req.on('error', (err) => {
resolve({
success: false,
error: err.message,
});
});
if (body) {
req.write(JSON.stringify(body));
}
req.end();
});
}
async function main() {
console.log('🔍 API 对接验证\n');
let token = null;
// 1. Login
console.log('POST /api/v1/login');
const loginResult = await makeRequest('POST', '/login', {
email: 'admin@example.com',
password: 'password123',
});
if (loginResult.success && loginResult.data.token) {
token = loginResult.data.token;
console.log(' ✅ 登录成功');
console.log(` 📝 Token: ${token.substring(0, 20)}...`);
} else {
console.log(' ❌ 登录失败');
console.log(` 错误: ${loginResult.data?.message || loginResult.error}`);
return;
}
// 2. Get Profile
console.log('\nGET /api/v1/profile/me');
const profileResult = await makeRequest('GET', '/profile/me', null, token);
console.log(
profileResult.success
? ' ✅ 获取个人资料成功'
: ` ❌ 失败: ${profileResult.data?.message || 'Unknown'}`
);
// 3. Update Profile
console.log('\nPUT /api/v1/profile/me');
const updateResult = await makeRequest(
'PUT',
'/profile/me',
{ username: 'admin', phone: '13800138000' },
token
);
console.log(
updateResult.success
? ' ✅ 更新个人资料成功'
: ` ❌ 失败: ${updateResult.data?.message || 'Unknown'}`
);
// 4. Get Users
console.log('\nGET /api/v1/users');
const usersResult = await makeRequest('GET', '/users', null, token);
console.log(
usersResult.success
? ` ✅ 获取用户列表成功 (${usersResult.data?.data?.users?.length || 0} 个用户)`
: ` ❌ 失败: ${usersResult.data?.message || 'Unknown'}`
);
// 5. Dashboard Stats (可能不存在)
console.log('\nGET /api/v1/dashboard/stats');
const statsResult = await makeRequest('GET', '/dashboard/stats', null, token);
console.log(
statsResult.success
? ' ✅ 获取仪表板统计成功'
: ' ⚠️ 端点不存在或需要后端实现'
);
// 6. Dashboard Activities (可能不存在)
console.log('\nGET /api/v1/dashboard/activities');
const activitiesResult = await makeRequest(
'GET',
'/dashboard/activities?limit=5',
null,
token
);
console.log(
activitiesResult.success
? ' ✅ 获取最近活动成功'
: ' ⚠️ 端点不存在或需要后端实现'
);
console.log('\n✨ 验证完成');
}
main();
Loading…
Cancel
Save