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

如何在Rawg.io API中实现多标签交集的游戏搜索?

解决Rawg.io标签交集查询的问题

临时解决方案:客户端侧做交集处理

Rawg.io的tags参数默认是OR逻辑(返回包含任意指定标签的游戏),官方API目前没有提供强制交集的参数。你可以通过以下步骤在客户端实现需求:

  1. 分别请求每个标签下的所有游戏列表(注意处理分页,避免漏掉数据)
  2. 提取每个列表的游戏ID,找出三个列表的共同ID(交集)
  3. 用这些共同ID批量查询游戏详情

代码示例

const API_KEY = 'XXXXX';
const API_URL = `https://api.rawg.io/api/games?key=${API_KEY}`;

// 获取单个标签下的所有游戏(自动处理分页)
async function fetchAllGamesForTag(tag) {
  let allGames = [];
  let currentPage = 1;

  while (true) {
    const res = await fetch(`${API_URL}&tags=${tag}&page_size=40&page=${currentPage}`);
    const data = await res.json();
    
    allGames = [...allGames, ...data.results];
    if (!data.next) break; // 没有下一页时停止请求
    currentPage++;
  }
  return allGames;
}

// 获取同时包含所有指定标签的游戏
async function getGamesWithAllTags(targetTags) {
  // 并行获取每个标签的游戏列表
  const tagGameLists = await Promise.all(targetTags.map(fetchAllGamesForTag));
  
  // 将每个列表转为ID集合,方便求交集
  const idSets = tagGameLists.map(list => new Set(list.map(game => game.id)));
  
  // 找出所有集合的共同ID
  const commonGameIds = [...idSets[0]].filter(id => {
    return idSets.every(set => set.has(id));
  });
  
  // 批量查询这些ID对应的游戏详情
  if (commonGameIds.length === 0) return [];
  const detailRes = await fetch(`${API_URL}&ids=${commonGameIds.join(',')}`);
  const detailData = await detailRes.json();
  
  return detailData.results;
}

// 使用示例
getGamesWithAllTags(['action', 'cooperative', 'farm'])
  .then(matchingGames => console.log('匹配的游戏:', matchingGames))
  .catch(error => console.error('请求出错:', error));

注意事项

  • 该方法需要多次请求API,要注意Rawg.io的请求频率限制,避免被限流
  • 如果标签下的游戏数量极多,分页请求会增加耗时,可以根据需求调整page_size(最大支持40)

支持标签交集的替代游戏数据库

如果客户端处理的方式不够高效,可以考虑切换到支持原生标签交集查询的平台:

  • IGDB:基于GraphQL的API,支持灵活的过滤逻辑,可直接指定多个标签必须同时存在
  • Giant Bomb API:提供高级搜索功能,能通过参数组合实现多标签交集筛选
  • Steam Web API:针对Steam平台游戏,支持通过筛选器指定多个标签的交集查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:40:15