Steam Profile API 是一个 RESTful API,用于获取配置用户的 Steam 个人资料信息,包括拥有的游戏、最近游玩游戏、成就进度等。
- HTTP 方法:
GET - Content-Type:
application/json; charset=utf-8 - CORS: 已启用(允许所有来源)
- 缓存: 默认启用,可通过环境变量配置
| 端点 | 用途 | 返回数据 | 缓存时长 |
|---|---|---|---|
/api/steam-user |
用户基本信息 | 用户资料、游戏统计、成就统计 | 10分钟 |
/api/steam-games |
游戏库信息 | 所有游戏列表(支持自定义数量)、最近游戏、成就统计 | 24小时 |
/api/steam-game |
单个游戏详情 | 指定游戏的完整信息、游玩时间、成就统计 | 24小时 |
/api/steam-achievements |
成就详情 | 按游戏分组的详细成就列表 | 1小时 |
使用场景:
- 需要用户基本信息(名称、头像、游戏总数):调用
/api/steam-user - 需要游戏库和最近游戏详情:调用
/api/steam-games(包含价格、发布日期、成就统计) - 需要查询特定游戏的详细信息和个人游玩时间:调用
/api/steam-game?appid=xxx - 需要成就详细列表:调用
/api/steam-achievements(包含每个成就的解锁状态) - 优化性能:分别调用各端点,按需获取,各端点独立缓存
端点职责分离(明确划分,避免冗余调用)
为了保持查询快速响应,各端点职责完全分离,各自只发起必要的 Steam API 请求:
| 端点 | 调用的 Steam API | 返回数据 | 注意事项 |
|---|---|---|---|
/api/steam-user |
GetPlayerSummariesGetOwnedGames |
用户资料、游戏数量、游玩时长统计 | 不包含游戏列表、成就数据 |
/api/steam-games |
GetOwnedGamesGetRecentlyPlayedGamesGetGameDetailsGetPlayerAchievements |
游戏库(前 N 个,默认 100,可通过 limit 参数自定义)、最近游戏、成就统计。游戏按总时长降序排序 | 不包含用户资料、成就详细列表 |
/api/steam-game |
GetOwnedGamesGetGameDetailsGetPlayerAchievements |
指定游戏的完整信息:游玩时间、价格、图片、简介、成就统计 | 需要 appid 参数,仅返回用户拥有的游戏 |
/api/steam-achievements |
GetRecentlyPlayedGamesGetOwnedGamesGetPlayerAchievements |
按游戏分组的成就详细列表 | 不包含用户资料、游戏库详情 |
为什么这样设计?
- ✅ 每个端点只做自己的事,避免不必要的网络请求
- ✅ 本地开发和生产环境行为完全一致(无环境相关的额外调用)
- ✅ 客户端可以按需调用,不用一次性加载所有数据
- ✅ 独立的缓存策略(用户信息10分钟、游戏24小时、成就1小时)
预期延迟(仅作参考)
- 首次请求(未命中缓存):
/api/steam-user:1-2 秒(仅两个 API 调用)/api/steam-games:2-4 秒(需要获取最近游戏的详情和成就)/api/steam-achievements:3-5 秒(需要获取所有成就详情)
- 缓存命中:通常 < 10ms
获取配置用户的完整 Steam 信息。
示例请求:
curl -X GET "http://localhost:4000/api/steam-user"请求头:
GET /api/steam-user HTTP/1.1
Host: localhost:4000
Accept: application/json
查询参数:
无。API 直接返回环境变量中配置的 Steam 用户信息。
获取游戏库和最近游戏的信息。
示例请求:
curl -X GET "http://localhost:4000/api/steam-games"
# 指定返回游戏数量(最多 100 个)
curl -X GET "http://localhost:4000/api/steam-games?limit=30"
# 指定地区获取价格
curl -X GET "http://localhost:4000/api/steam-games?limit=20&cc=us"查询参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
limit |
number | 100 | 返回游戏列表中的最大数量。支持范围:1-100。返回的游戏按总游玩时长降序排序 |
cc |
string | cn | 国家/地区代码,影响游戏价格和货币显示(如 us, jp, de 等) |
获取指定 Steam 游戏的详细信息、个人游玩时间和成就统计。
示例请求:
# 获取游戏 ID 为 570 (Dota 2) 的详细信息
curl -X GET "http://localhost:4000/api/steam-game?appid=570"
# 指定地区获取价格
curl -X GET "http://localhost:4000/api/steam-game?appid=570&cc=us"请求头:
GET /api/steam-game?appid=570 HTTP/1.1
Host: localhost:4000
Accept: application/json
查询参数:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
appid |
number | 是 | Steam 应用 ID,必须是用户拥有的游戏 |
cc |
string | 否 | 国家/地区代码,影响游戏价格和货币显示(如 us, jp, de 等),默认为 cn |
响应成功条件:
- 用户拥有该游戏
- appid 是有效的正整数
获取用户的成就数据(包含详细的成就列表)。
示例请求:
curl -X GET "http://localhost:4000/api/steam-achievements"查询参数:
无。API 直接返回成就数据。
/api/steam-user 响应示例:
{
"success": true,
"data": {
"user": {
"steamid": "76561198123456789",
"username": "YourUsername",
"profileUrl": "https://steamcommunity.com/profiles/76561198123456789",
"avatar": {
"small": "https://avatars.steamstatic.com/...jpg",
"medium": "https://avatars.steamstatic.com/...jpg",
"large": "https://avatars.steamstatic.com/...jpg"
},
"status": "online",
"statusMessage": "In-game",
"currentGame": { "appid": 570, "name": "Dota 2" },
"playtimeStats": { "totalForever": 1200, "totalTwoWeeks": 50 }
}
},
"metadata": {
"cached": true,
"cachedAt": "2025-10-18T12:34:56.789Z",
"cacheExpiry": "2025-10-18T12:39:56.789Z",
"fetchDuration": "1234ms"
}
}/api/steam-games 响应示例:
{
"success": true,
"data": {
"games": {
"totalCount": 150,
"recentCount": 3,
"recentGames": [{ "appid": 570, "name": "Dota 2", "achievements": { "total": 14, "unlocked": 10, "percentage": 71 } }],
"allGames": [{ "appid": 570, "name": "Dota 2", "achievements": { "total": 14, "unlocked": 10, "percentage": 71 } }]
}
},
"metadata": { "cached": false, "cachedAt": "2025-10-18T12:34:56.789Z", "cacheExpiry": "2025-10-18T13:34:56.789Z", "fetchDuration": "3456ms" }
}/api/steam-game 响应示例:
{
"success": true,
"data": {
"game": {
"appid": 570,
"name": "Dota 2",
"playtimeForever": 3600,
"playtimeTwoWeeks": 120,
"price": {
"amount": 0,
"currency": "CNY",
"displayPrice": "Free to Play"
},
"images": {
"icon": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._icon.jpg",
"logo": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._logo.png",
"headerImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/header.jpg",
"heroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/hero.jpg",
"libraryHeroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/library_hero.jpg"
},
"releaseDate": "2011-04-09",
"shortDescription": "Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes...",
"achievements": {
"total": 14,
"unlocked": 10,
"percentage": 71
}
}
},
"metadata": {
"cached": false,
"cachedAt": "2025-10-18T12:34:56.789Z",
"cacheExpiry": "2025-10-18T13:34:56.789Z",
"fetchDuration": "2345ms"
}
}/api/steam-achievements 响应示例:
{
"success": true,
"data": {
"achievements": {
"totalCount": 250,
"unlockedCount": 125,
"unlockedPercentage": 50,
"byGame": [
{
"appid": 570,
"gameName": "Dota 2",
"total": 100,
"unlocked": 50,
"percentage": 50,
"items": [{ "name": "FIRST_BLOOD", "description": "Get a first blood", "unlocked": true, "unlockTime": 1634567890, "images": { "icon": "...", "iconGray": "..." } }]
}
]
}
},
"metadata": { "cached": true, "cachedAt": "2025-10-18T12:34:56.789Z", "cacheExpiry": "2025-10-18T13:34:56.789Z", "fetchDuration": "1200ms" }
}{
"success": false,
"error": "Error message",
"code": "ERROR_CODE"
}每个端点返回不同的数据结构,体现职责分离原则:
// /api/steam-user 返回
{ "user": { ... } }
// /api/steam-games 返回
{ "games": { ... } }
// /api/steam-game 返回
{ "game": { ... } }
// /api/steam-achievements 返回
{ "achievements": { ... } }用户基本信息和状态。
{
"user": {
"steamid": "76561198123456789", // Steam 64位ID
"username": "YourUsername", // 用户名
"profileUrl": "https://steamcommunity.com/profiles/...",
"avatar": {
"small": "https://avatars.steamstatic.com/..._32bf.jpg", // 32x32
"medium": "https://avatars.steamstatic.com/..._64bf.jpg", // 64x64
"large": "https://avatars.steamstatic.com/..._full.jpg" // 184x184
},
"status": "online", // online, offline, away, snooze, busy, trading, playing
"statusMessage": "In-game",
"currentGame": { // 可选:当前在玩的游戏
"appid": 570,
"name": "Dota 2"
},
"playtimeStats": { // 用户游玩时长统计
"totalForever": 1200, // 总游玩时长(小时)
"totalTwoWeeks": 50 // 最近两周总游玩时长(小时)
}
}
}字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
steamid |
string | Steam 64位 ID,唯一标识符 |
username |
string | 用户当前的昵称 |
profileUrl |
string | Steam 社区个人资料页面 URL |
avatar.small |
string | Steam CDN 上的小头像(32x32) |
avatar.medium |
string | Steam CDN 上的中头像(64x64) |
avatar.large |
string | Steam CDN 上的大头像(184x184) |
status |
enum | 当前在线状态 |
statusMessage |
string | 状态文本描述 |
currentGame |
object? | 正在玩的游戏(如果在游戏中) |
playtimeStats.totalForever |
number | 所有游戏总游玩时长(小时) |
playtimeStats.totalTwoWeeks |
number | 最近两周所有游戏总游玩时长(小时) |
状态值映射:
| 值 | 含义 |
|---|---|
offline |
离线 |
online |
在线 |
away |
离开 |
snooze |
打盹 |
busy |
忙碌 |
trading |
交易中 |
playing |
游戏中 |
游戏库信息。
{
"games": {
"totalCount": 150, // 拥有的游戏总数
"recentCount": 3, // 最近两周内玩过的游戏总数(由 Steam API 决定)
"recentGames": [ // 最近玩过的游戏详细信息
{
"appid": 570,
"name": "Dota 2",
"playtimeForever": 3600, // 总游玩时长(小时)
"playtimeTwoWeeks": 120, // 两周内游玩时长(小时)
"price": {
"amount": 0, // 价格(美分)
"currency": "USD",
"displayPrice": "Free to Play"
},
"images": {
"icon": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._icon.jpg",
"logo": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._logo.png",
"headerImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/header.jpg",
"heroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/hero.jpg",
"libraryHeroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/library_hero.jpg"
},
"releaseDate": "2011-04-09",
"shortDescription": "Every day, millions of players worldwide enter battle as one of over a hundred Dota heroes...",
"achievements": { // 该游戏的成就统计
"total": 14, // 该游戏的成就总数
"unlocked": 10, // 该游戏已解锁成就数
"percentage": 71 // 完成百分比
}
}
],
"allGames": [ // 所有拥有游戏的简略信息(最多100个)
{
"appid": 570,
"name": "Dota 2",
"playtimeForever": 3600, // 总游玩时长(小时)
"playtimeTwoWeeks": 120, // 两周内游玩时长(小时)
"images": {
"icon": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._icon.jpg",
"headerImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/header.jpg"
},
"achievements": { // 该游戏的成就统计(可选)
"total": 14,
"unlocked": 10,
"percentage": 71
}
}
]
}
}字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
totalCount |
number | 拥有的游戏总数 |
recentCount |
number | 最近两周内玩过的游戏总数(由 Steam API 返回) |
recentGames |
array | 最近玩过的游戏详细信息(数量 ≤ recentCount) |
allGames |
array | 所有拥有游戏的简略信息(最多100个) |
重要说明:
recentCount表示用户在最近两周内玩过的所有游戏总数(由 Steam 决定)recentGames中的游戏数量等于recentCount(API 返回所有最近游戏)allGames中的游戏最多为 limit 个(默认 100,最多 100),按总游玩时长降序排序
RecentGame 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
appid |
number | Steam 应用 ID |
name |
string | 游戏名称 |
playtimeForever |
number | 总游玩时长(小时) |
playtimeTwoWeeks |
number | 近两周游玩时长(小时) |
price.amount |
number | 价格(美分),0表示免费 |
price.currency |
string | 货币代码(如 USD、CNY) |
price.displayPrice |
string | 格式化的价格显示 |
images.* |
string | 游戏相关图片的 Steam CDN URL |
releaseDate |
string | 发布日期(YYYY-MM-DD) |
shortDescription |
string | 游戏简介 |
achievements.total |
number | 该游戏的成就总数(可选) |
achievements.unlocked |
number | 该游戏已解锁的成就数(可选) |
achievements.percentage |
number | 该游戏的成就完成百分比(可选) |
重要说明:
recentGames中返回的游戏与achievements.byGame中的游戏完全对应- 每个最近游戏都包含了其成就统计信息(
total、unlocked、percentage) allGames中的前50个游戏也包含成就统计信息achievements.byGame中提供了这些游戏所有成就的详细信息(成就列表)achievements.totalCount和unlockedCount是所有这些游戏(最近游戏 + 游戏库前50个)的成就总和
图片 URL 说明:
| 图片类型 | 尺寸 | 用途 |
|---|---|---|
icon |
32x32 | 游戏列表小图标 |
logo |
宽度 120px | 游戏 Logo |
headerImage |
460x215 | 列表页面 Header 图 |
heroImage |
1920x622 | 详情页面 Hero 图 |
libraryHeroImage |
1920x622 | Steam 库 Hero 图 |
单个游戏的详细信息。
{
"game": {
"appid": 570, // Steam 应用 ID
"name": "Dota 2", // 游戏名称
"playtimeForever": 3600, // 总游玩时长(小时)
"playtimeTwoWeeks": 120, // 两周内游玩时长(小时)
"price": {
"amount": 0, // 价格(美分)
"currency": "CNY", // 货币代码
"displayPrice": "Free to Play" // 格式化的价格显示
},
"images": {
"icon": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._icon.jpg",
"logo": "https://media.steampowered.com/steamcommunity/public/images/apps/570/..._logo.png",
"headerImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/header.jpg",
"heroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/hero.jpg",
"libraryHeroImage": "https://cdn.cloudflare.steamstatic.com/steam/apps/570/library_hero.jpg"
},
"releaseDate": "2011-04-09", // 发布日期
"shortDescription": "Every day, millions of players...", // 游戏简介
"achievements": { // 该游戏的成就统计(可选)
"total": 14, // 成就总数
"unlocked": 10, // 已解锁成就数
"percentage": 71 // 完成百分比
}
}
}字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
appid |
number | Steam 应用 ID |
name |
string | 游戏名称 |
playtimeForever |
number | 总游玩时长(小时) |
playtimeTwoWeeks |
number | 近两周游玩时长(小时) |
price.amount |
number | 价格(美分),0表示免费 |
price.currency |
string | 货币代码(如 USD、CNY) |
price.displayPrice |
string | 格式化的价格显示 |
images.* |
string | 游戏相关图片的 Steam CDN URL |
releaseDate |
string | 发布日期(YYYY-MM-DD) |
shortDescription |
string | 游戏简介 |
achievements.total |
number | 该游戏的成就总数(可选) |
achievements.unlocked |
number | 该游戏已解锁的成就数(可选) |
achievements.percentage |
number | 该游戏的成就完成百分比(可选) |
成就信息。
{
"achievements": {
"totalCount": 250, // 所有成就总数
"unlockedCount": 125, // 已解锁成就数
"unlockedPercentage": 50, // 解锁百分比
"byGame": [ // 按游戏分组的成就
{
"appid": 570,
"gameName": "Dota 2",
"total": 100,
"unlocked": 50,
"percentage": 50,
"items": [
{
"name": "FIRST_BLOOD",
"description": "Get a first blood",
"unlocked": true,
"unlockTime": 1634567890, // Unix 时间戳
"images": {
"icon": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/570/achievements/..._icon.jpg",
"iconGray": "https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/apps/570/achievements/..._scr.jpg"
}
}
]
}
]
}
}字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
totalCount |
number | 所有游戏的成就总数 |
unlockedCount |
number | 已解锁的成就数 |
unlockedPercentage |
number | 解锁百分比(0-100) |
byGame |
array | 按游戏分组的成就数据 |
GameAchievements 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
appid |
number | 游戏的 Steam App ID |
gameName |
string | 游戏名称 |
total |
number | 此游戏的成就总数 |
unlocked |
number | 此游戏已解锁的成就数 |
percentage |
number | 此游戏的解锁百分比 |
items |
array | 成就详细信息 |
Achievement 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
name |
string | 成就代号 |
description |
string | 成就描述 |
unlocked |
boolean | 是否已解锁 |
unlockTime |
number | 解锁时间戳(已解锁时) |
images.icon |
string | 成就已解锁时的图标 |
images.iconGray |
string | 成就未解锁时的灰色图标 |
响应元数据。
{
"metadata": {
"cached": true, // 是否从缓存返回
"cachedAt": "2025-10-18T12:34:56.789Z", // 缓存时间
"cacheExpiry": "2025-10-18T12:39:56.789Z",// 缓存过期时间
"fetchDuration": "1234ms" // 数据获取耗时(如果非缓存)
}
}字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
cached |
boolean | 此响应是否来自缓存 |
cachedAt |
string | ISO 8601 格式的缓存时间 |
cacheExpiry |
string | 缓存过期时间 |
fetchDuration |
string | 数据获取耗时 |
{
"success": false,
"error": "STEAM_API_KEY environment variable is not set",
"code": "ENV_ERROR"
}状态码: 500
原因: STEAM_API_KEY 环境变量未设置
解决方案:
- 设置
STEAM_API_KEY环境变量 - 查看
.env.example获取配置模板
{
"success": false,
"error": "STEAM_USER_ID must be a 17-digit number",
"code": "ENV_ERROR"
}状态码: 500
原因: STEAM_USER_ID 不是 17 位数字
解决方案:
- 访问 https://steamid.io
- 输入 Steam 用户名查询正确的 64 位 ID
- 确保 ID 是 17 位纯数字
{
"success": false,
"error": "Failed to fetch Steam user data",
"code": "STEAM_API_ERROR"
}状态码: 500
原因:
- Steam 个人资料设为私密
- Steam API 无权访问该用户的数据
解决方案:
- 打开 https://steamcommunity.com/settings/privacy
- 将 "游戏内容" 和 "成就" 设为 "公开"
- 稍后重试 API
{
"success": false,
"error": "Method not allowed",
"code": "METHOD_NOT_ALLOWED"
}状态码: 405
原因: 使用了 POST、PUT 等非 GET 方法
解决方案: 仅使用 GET 请求
{
"success": false,
"error": "Not found",
"code": "NOT_FOUND"
}状态码: 404
原因: 请求的路径不存在
解决方案: 检查 URL 是否正确,应为 /api/steam-user
{
"success": false,
"error": "Missing required query parameter: appid",
"code": "MISSING_PARAM"
}状态码: 400
原因: /api/steam-game 端点需要 appid 查询参数
解决方案: 提供有效的 appid 参数,例如 /api/steam-game?appid=570
{
"success": false,
"error": "Invalid appid: must be a positive integer",
"code": "INVALID_PARAM"
}状态码: 400
原因: appid 参数不是有效的正整数
解决方案: 确保 appid 是一个正整数,例如 ?appid=570
{
"success": false,
"error": "Game with appId 999999 not found in user's library",
"code": "GAME_NOT_FOUND"
}状态码: 404
原因:
- 指定的游戏不在配置用户的游戏库中
- 游戏 ID 不正确
解决方案:
- 确保
appid值正确 - 确保该游戏已购买或已添加到用户的库中
- 可以先调用
/api/steam-games查看用户拥有的所有游戏
API 返回的游戏信息、描述、价格等均可本地化。语言由环境变量控制,不再通过 URL 查询参数设置。
- STEAM_LANGUAGE 或 STEAM_LANG:指定 Steam 商店 API 返回的语言。
- 支持的常用值:
schinese(简体中文,默认)english(英文)japanese(日文)tchinese(繁体中文)german、french、spanish、russian等
- 例如:
STEAM_LANGUAGE=english npm start # 或 STEAM_LANGUAGE=schinese npm run dev - 未设置时,默认返回简体中文(schinese)。
- 支持的常用值:
Steam 商店价格、货币等信息由 cc 查询参数控制:
cc:国家/地区代码(如cn,us,jp,de等),影响价格、货币符号等。- 例如:
/api/steam-games?cc=us返回美元价格/api/steam-games?cc=jp返回日元价格/api/steam-games?cc=cn返回人民币价格
- 例如:
注意:
- 语言和地区可以独立设置。例如:你可以用
STEAM_LANGUAGE=english并请求/api/steam-games?cc=cn,这样会返回中文区的价格但所有文本为英文。 - 语言环境变量优先级高于任何请求参数,API 不再支持通过
lang查询参数切换语言。
最近游戏的数量由 Steam API 决定,表示用户在最近两周内玩过的游戏总数。API 无法配置此数量,将返回 Steam 统计的实际数量。
说明:
games.recentCount: 用户最近两周内玩过的游戏总数(来自 Steam API)games.recentGames: 实际返回的最近游戏列表
/api/steam-games 端点返回的 allGames 列表支持通过 limit 查询参数自定义返回的游戏数量。
说明:
limit参数:控制返回游戏的数量,取值范围 1-100,默认值 100- 返回的游戏按总游玩时长(
playtimeForever)降序排序 - 示例:
/api/steam-games?limit=30返回按时长排序的前 30 个游戏
| 数据类型 | 默认 TTL | 环境变量 |
|---|---|---|
| 用户信息 | 10 分钟 | CACHE_TTL_USER_MINUTES |
| 游戏信息 | 24 小时 | CACHE_TTL_GAMES_HOURS |
| 成就信息 | 1 小时 | CACHE_TTL_ACHIEVEMENTS_HOURS |
缓存键格式: steam-user-{STEAM_USER_ID}
在 .env 或部署平台的环境变量中配置:
# 用户信息缓存时长(分钟)
CACHE_TTL_USER_MINUTES=10
# 游戏信息缓存时长(小时)
CACHE_TTL_GAMES_HOURS=48
# 成就信息缓存时长(小时)
CACHE_TTL_ACHIEVEMENTS_HOURS=2| 场景 | 平均时间 |
|---|---|
| 缓存命中 | < 10ms |
| 首次请求 | 2-5秒 |
| Steam API 超时 | > 30秒 |
- 无硬并发限制
- Steam API 限制: ~1600 请求/秒
- 平均响应大小: 50-200 KB(取决于游戏数量和成就数)
Q: API 能查询其他用户吗?
A: 不能。本 API 仅返回在部署时配置的单个 Steam 用户的信息。
Q: 如何强制刷新缓存?
A: 目前不支持。请等待缓存过期或重启服务器。
Q: 支持哪些成就?
A: 所有有成就系统的 Steam 游戏。API 返回最近玩过的游戏的成就详情(最近两周内实际玩过的游戏)。
Q: 为什么返回的最近游戏数量很少?
A: 因为 Steam API 返回的是用户在最近两周内实际玩过的游戏。如果用户最近两周只玩了 3 个游戏,API 就只会返回这 3 个游戏。这个数量由 Steam 决定,无法配置。您可以通过 games.recentCount 字段查看实际的最近游戏总数。
Q: 能改变最近游戏的返回数量吗?
A: 不能。最近游戏数量完全由 Steam API 决定,无法通过配置改变。Steam 会返回用户最近两周内玩过的所有游戏。
Q: 能改变游戏库返回的数量吗?
A: 可以。使用 limit 查询参数自定义返回的游戏数量。例如 /api/steam-games?limit=30 会返回前 30 个游戏。支持范围:1-100。
Q: 游戏库是按什么顺序返回的?
A: 按总游玩时长(playtimeForever)降序排序。游玩时间最长的游戏会首先出现。
Q: 如何获取单个游戏的详细信息?
A: 使用 /api/steam-game?appid=xxx 端点,其中 xxx 是游戏的 Steam App ID。例如:/api/steam-game?appid=570。该端点返回单个游戏的完整信息,包括游玩时间统计、价格、成就统计等。
Q: /api/steam-game 端点支持查询用户没有购买的游戏吗?
A: 不支持。该端点仅返回用户已购买或拥有的游戏。如果查询用户没有的游戏,将返回 404 错误 GAME_NOT_FOUND。
Q: 图片加载失败怎么办?
A: 这是 Steam CDN 的临时问题。所有图片 URL 都是有效的公开 Steam CDN 链接。
---