/** * 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();