Files
nxxmdata/government-backend/test-problematic-apis.js
2025-10-23 17:26:47 +08:00

163 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const axios = require('axios');
// 测试有问题的政府端API接口
const baseURL = 'https://ad.ningmuyun.com';
const testAPIs = [
// 正常的接口
{
name: '数据览仓接口',
url: '/api/government/data-center',
method: 'GET',
category: '正常'
},
{
name: '市场行情接口',
url: '/api/government/market-price',
method: 'GET',
category: '正常'
},
{
name: '行政部门接口',
url: '/api/government/departments',
method: 'GET',
category: '正常'
},
// 有问题的接口
{
name: '行政人员接口',
url: '/api/government/admin-staff',
method: 'GET',
category: '问题'
},
{
name: '养殖户接口',
url: '/api/government/farmers',
method: 'GET',
category: '问题'
},
{
name: '智能项圈接口',
url: '/api/government/collars',
method: 'GET',
category: '问题'
},
{
name: '养殖类型接口',
url: '/api/government/farm-types',
method: 'GET',
category: '问题'
},
{
name: '养殖种类接口',
url: '/api/government/animal-types',
method: 'GET',
category: '问题'
}
];
async function testAPI(api) {
try {
console.log(`\n测试 ${api.name} (${api.category})...`);
console.log(`URL: ${baseURL}${api.url}`);
const response = await axios({
method: api.method,
url: `${baseURL}${api.url}`,
timeout: 10000,
headers: {
'Content-Type': 'application/json'
}
});
console.log(`✅ 状态码: ${response.status}`);
console.log(`✅ 响应: ${JSON.stringify(response.data).substring(0, 100)}...`);
return { success: true, status: response.status, data: response.data };
} catch (error) {
console.log(`❌ 错误: ${error.message}`);
if (error.response) {
console.log(`❌ 状态码: ${error.response.status}`);
console.log(`❌ 响应: ${JSON.stringify(error.response.data)}`);
// 检查是否是路径重复错误
if (error.response.data && JSON.stringify(error.response.data).includes('government/government')) {
console.log(`🚨 发现路径重复错误!`);
}
// 检查是否是404错误
if (error.response.status === 404) {
console.log(`🚨 404错误 - 接口不存在或路由配置问题`);
}
} else if (error.code === 'ECONNREFUSED') {
console.log(`🚨 连接被拒绝 - 服务可能没有启动`);
}
return { success: false, error: error.message, status: error.response?.status };
}
}
async function runTests() {
console.log('测试政府端API接口 - 对比正常和问题接口...');
console.log('='.repeat(60));
const results = [];
for (const api of testAPIs) {
const result = await testAPI(api);
results.push({
name: api.name,
url: api.url,
category: api.category,
...result
});
// 等待1秒再测试下一个接口
await new Promise(resolve => setTimeout(resolve, 1000));
}
console.log('\n' + '='.repeat(60));
console.log('测试结果汇总:');
console.log('='.repeat(60));
// 按类别分组统计
const normalAPIs = results.filter(r => r.category === '正常');
const problemAPIs = results.filter(r => r.category === '问题');
console.log('\n正常接口:');
normalAPIs.forEach(result => {
const status = result.success ? '✅' : '❌';
console.log(` ${status} ${result.name}`);
});
console.log('\n问题接口:');
problemAPIs.forEach(result => {
const status = result.success ? '✅' : '❌';
console.log(` ${status} ${result.name}`);
});
const normalSuccess = normalAPIs.filter(r => r.success).length;
const problemSuccess = problemAPIs.filter(r => r.success).length;
console.log(`\n统计结果:`);
console.log(`正常接口: ${normalSuccess}/${normalAPIs.length} 通过`);
console.log(`问题接口: ${problemSuccess}/${problemAPIs.length} 通过`);
if (normalSuccess === normalAPIs.length && problemSuccess === 0) {
console.log('\n🔍 分析结果:');
console.log('✅ 正常接口全部通过');
console.log('❌ 问题接口全部失败');
console.log('🚨 这表明问题接口确实存在路由或实现问题');
} else if (normalSuccess === normalAPIs.length && problemSuccess > 0) {
console.log('\n🔍 分析结果:');
console.log('✅ 部分问题接口已修复');
console.log('⚠️ 仍有部分问题接口需要修复');
} else {
console.log('\n🔍 分析结果:');
console.log('⚠️ 所有接口都有问题可能是nginx配置问题');
}
}
// 运行测试
runTests().catch(console.error);