const axios = require('axios'); const graphqlUrl = 'http://localhost:8080/api/graphql'; // 使用一个测试token(需要先获取有效token) const token = 'Bearer_TOKEN_HERE'; // 这里需要替换为有效token async function testMiniprogramFormat() { try { console.log('=== 模拟微信小程序请求格式测试 ===\n'); // 模拟微信小程序的请求格式 const query = ` query GetUnReviewedProjects($page: Int!, $pageSize: Int!, $searchKeyword: String) { unReviewedProjects(page: $page, pageSize: $pageSize, searchKeyword: $searchKeyword) { items { id projectName activityName stageName studentName submitTime status } total hasMore } } `; const variables = { page: 1, pageSize: 10, searchKeyword: "" }; console.log('发送的查询:'); console.log('Query:', query); console.log('Variables:', variables); console.log('Headers:', { 'Content-Type': 'application/json', 'Authorization': token ? `Bearer ${token}` : '' }); // 模拟微信小程序的请求 const response = await axios.post(graphqlUrl, { query: query, variables: variables }, { headers: { 'Content-Type': 'application/json', 'Authorization': token ? `Bearer ${token}` : '' } }); console.log('\n响应状态码:', response.status); console.log('响应数据:', response.data); if (response.data.errors) { console.error('\n❌ GraphQL错误:', response.data.errors); } else { console.log('\n✅ 请求成功!'); } } catch (error) { console.error('\n❌ 请求失败:'); console.error('错误信息:', error.message); if (error.response) { console.error('HTTP状态码:', error.response.status); console.error('响应头:', error.response.headers); console.error('响应数据:', error.response.data); // 特别检查400错误 if (error.response.status === 400) { console.error('\n🔍 这是400错误!可能的原因:'); console.error('1. GraphQL查询语法错误'); console.error('2. 变量类型不匹配'); console.error('3. 字段不存在'); console.error('4. 权限问题'); console.error('5. 请求格式问题'); } } } } // 首先尝试获取有效token async function getValidToken() { try { console.log('正在获取有效token...'); const loginMutation = ` mutation wxLogin($input: WxLoginRequest!) { wxLogin(input: $input) { token userInfo { userId name userType } } } `; // 需要用户提供新的微信code const wxCode = 'NEED_NEW_WX_CODE'; // 这里需要替换为新的微信code const loginResponse = await axios.post(graphqlUrl, { query: loginMutation, variables: { input: { code: wxCode, wxOpenid: "test-openid-152" } } }); if (loginResponse.data.errors) { console.error('登录失败:', loginResponse.data.errors); console.log('\n请提供新的微信登录code来测试!'); return null; } const { token } = loginResponse.data.data.wxLogin; console.log('✅ 获取token成功!'); return token; } catch (error) { console.error('获取token失败:', error.message); return null; } } async function main() { // 如果没有有效token,先尝试获取 if (token === 'Bearer_TOKEN_HERE') { console.log('需要先获取有效token...'); const validToken = await getValidToken(); if (!validToken) { console.log('\n❌ 无法获取有效token,请提供新的微信登录code'); return; } // 这里应该更新token变量,但由于是const,我们需要手动替换 console.log('\n请将获取到的token替换到脚本中的token变量,然后重新运行测试'); return; } await testMiniprogramFormat(); } main();