You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL查询返回空值排查:API数据获取失败问题求助

你的GraphQL查询返回空值的原因及修复方案

我帮你排查了下代码,发现几个关键问题导致返回空值,咱们一个个来看:

1. API响应结构不匹配(最核心原因)

reqres.in的用户详情接口返回的JSON结构是嵌套的,实际的用户数据在response.data.data字段里,而不是直接返回response.data。你现在的resolve函数返回的是整个接口响应对象(包含data和support两个字段),但你的particularUser Schema只定义了用户的id、first_name等字段,GraphQL在返回的对象里找不到这些字段,自然就返回空值了。

2. ID类型不统一

你的查询参数id定义的是GraphQLString,但particularUser里的id字段是GraphQLInt,虽然reqres.in接口接受字符串格式的ID也能正常请求,但类型统一能避免潜在的类型转换问题,建议把参数类型改成GraphQLInt。

3. 错误处理不够规范

直接返回error对象可能会让GraphQL返回不符合预期的错误结构,建议抛出标准的错误信息,这样客户端能更清晰地看到问题所在。

修复后的完整代码

修改resolve函数

resolve: (_, { id }) => {
  console.log({ id });
  const url = `https://reqres.in/api/users/${id}`;
  console.log(url);
  return axios.get(url)
    .then((response) => {
      console.log(response.data.data); // 这里会打印正确的用户数据
      return response.data.data; // 返回嵌套在data里的用户对象
    })
    .catch((error) => {
      throw new Error(`Failed to fetch user: ${error.message}`);
    });
}

修改查询参数的ID类型

args: {
  id: { type: new GraphQLNonNull(GraphQLInt) }
}

这样修改后,你的查询应该就能正常返回用户数据了。

内容的提问来源于stack exchange,提问作者user8934737

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:47:05