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

如何在PokeApi GraphQL中仅获取front_default精灵Sprite?

PokeAPI GraphQL 仅获取front_default精灵Sprite的解决方案

我正在使用PokeAPI的GraphQL控制台获取带属性和精灵Sprite的宝可梦数据,属性部分已实现,但无法限制Sprite仅返回front_default类型。

当前查询语句

query samplePokeAPIquery {
   pokemon_v2_pokemon(
      where: {
        pokemon_v2_pokemontypes: {
          type_id: {_in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}, 
          pokemon_v2_pokemon: {name: {_like: "%%"}}
        }
      }, 
      order_by: {id: asc}, 
      limit: 10, offset: 0) {
    id
    name
    pokemon_v2_pokemonsprites {
     sprites
    }
  }
}

当前问题

响应返回的sprites字段是包含所有Sprite类型的JSON字符串,冗余数据过多,示例片段如下:

"sprites": "{\"front_default\": \"https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png\", \"front_female\": null, \"front_shiny\": \"https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/shiny/1.png\", ...}"

解决方案

PokeAPI的GraphQL基于Hasura构建,支持通过JSON路径直接提取指定字段。修改查询语句,利用path参数提取front_default:

修改后的查询

query samplePokeAPIquery {
  pokemon_v2_pokemon(
    where: {
      pokemon_v2_pokemontypes: {
        type_id: {_in: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]}, 
        pokemon_v2_pokemon: {name: {_like: "%%"}}
      }
    }, 
    order_by: {id: asc}, 
    limit: 10, offset: 0) {
    id
    name
    pokemon_v2_pokemonsprites {
      front_default: sprites(path: "$.front_default")
    }
  }
}

说明

  • 通过sprites(path: "$.front_default")指定JSON路径,直接提取目标字段的值
  • 用别名front_default统一返回字段名,便于后续使用
  • 若无法使用Hasura的路径提取功能,可在客户端将sprites字段的JSON字符串解析为对象后,再提取front_default属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:21:27