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

Unity调用SpaceX GraphQL API查询Users时参数报错问题排查

解决Unity中GraphQL查询"Unknown argument"错误

你遇到的问题核心是GraphQL查询本身没有声明对应的参数变量,导致API无法识别你通过SetArgs传入的name或first参数。咱们一步步来排查和解决:

1. 检查并修正你的GraphQL查询定义

你在代码中调用的GetAllData查询,必须在Unity的GraphApi配置里(通常是对应的.graphql文件或可视化配置项中)正确声明变量,并将变量传递给对应的字段。比如你的查询应该写成这样:

# 先声明查询需要用到的变量
query GetAllData($name: String, $first: Int) {
  # 将变量传递给users字段的对应参数位置
  users(name: $name, first: $first) {
    id
    name
    # 这里添加你需要的用户详情字段,比如email、createdAt等
  }
}

如果你的查询里没有定义$name和$first这两个变量,直接调用SetArgs传参数就会触发"Unknown argument"错误——因为GraphQL API不知道你传递的参数对应什么变量。

2. 确认SpaceX API的Users字段支持这些参数

你可以直接访问你提供的SpaceX GraphQL API地址,在自带的Playground里手动测试查询,确认users字段是否真的支持name过滤和first分页参数。比如在Playground里执行:

query TestUsers {
  users(first: 3, name: "Prakash") {
    id
    name
  }
}

如果这个查询返回错误,说明SpaceX的API本身不支持这些参数,那你需要调整为API支持的参数格式(比如可能是limit而非first,或者filter: {name: "xxx"}这类嵌套参数)。

3. 代码层面的小优化点

你的代码逻辑本身没问题,但有两个小细节可以调整:

  • 确保SetArgs传入的键名和查询里的变量名完全大小写一致(GraphQL对变量名大小写敏感);
  • 异步方法尽量用async Task替代async void(Unity UI事件回调除外),这样更容易捕获和排查异常。比如修改方法签名:
public async Task GetEnteredDetails() {
    // 原有逻辑保持不变
}

快速测试建议

先在GraphQL Playground里调试出能正常返回数据的查询语句,再把这个查询复制到Unity的GraphApi配置中,最后用代码调用,这样能快速定位是查询定义的问题还是API参数的问题。

内容的提问来源于stack exchange,提问作者Amar.linsila

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:22:32