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