PokeAPI是否包含所有宝可梦世代数据?如何获取特定世代的宝可梦属性?
PokeAPI历代属性数据查询解答
PokeAPI确实包含所有已发售宝可梦世代的完整数据,你可以通过特定的接口逻辑获取任意世代的宝可梦属性数值,无需依赖默认返回的最新世代数据。
你之前调用的https://pokeapi.co/api/v2/pokemon/butterfree/接口默认返回的是全世代通用的最新版标准化数据,本身不支持直接在URL上加世代参数筛选历史数据,要获取指定世代的属性值可以按照以下两种方案实现:
- 方案一:通过世代接口查询对应世代的宝可梦数据
你可以直接请求对应世代的接口,比如要获取第一世代的数据就请求https://pokeapi.co/api/v2/generation/1/,返回结果的pokemon_species字段中可以找到目标宝可梦的条目,该条目关联的子接口返回数据中就包含该世代下的专属种族值、属性配置等信息。 - 方案二:通过宝可梦形态接口查询全版本属性数据
巴大蝶的全国图鉴编号为12,你可以请求https://pokeapi.co/api/v2/pokemon-form/12/获取巴大蝶的全版本形态数据,返回结果的version_group字段对应不同世代的版本分组,每个分组下绑定的属性数值就是对应世代的有效值。
你可以参考下面的示例逻辑快速实现指定世代种族值查询:
// 入参:pokemonId为宝可梦全国图鉴编号,genNumber为世代编号(1~9对应现存9个世代) async function getGenerationStats(pokemonId, genNumber) { const generationResponse = await fetch(`https://pokeapi.co/api/v2/generation/${genNumber}/`); const generationData = await generationResponse.json(); const targetPokemon = generationData.pokemon_species.find(item => item.url.endsWith(`/${pokemonId}/`)); // 拉取targetPokemon.url对应的数据,即可提取该世代的stats属性值 }
小提示:部分宝可梦在不同世代存在形态差异,查询时请注意区分是世代种族值调整还是形态变更带来的属性数值变化,避免取错数据。
内容的提问来源于stack exchange,提问作者Tim Bentley
相关产品推荐
相关产品推荐

