您的利益相关者希望在您的产品中获得实时体育上下文:支持的体育列表以推动导航,一个可以找到团队和比赛的通用搜索框,以及用于 UI 美化的国家旗帜。在本指南结束时,您将从 Zyla API Hub 调用 SofaScore - 实时 API,以获取体育目录,通过查询搜索实体,并检索旗帜图像字节,提供生产就绪的 curl 和 Python 示例,您可以将其粘贴到您的代码库中。
您可以使用 SofaScore - 实时 API 构建的内容
该 API 为体育应用程序提供三项核心功能:
- 获取所有体育:可以在菜单、过滤器或入职流程中呈现的完整结构化体育列表。
- 搜索所有实体:一个单一的查询端点,可以搜索 SofaScore 实体(例如,团队),非常适合全局搜索框。
- 获取国家旗帜:获取国家旗帜的原始图像字节,以便在团队、球员或比赛旁边显示。
该 API 可在 Zyla API Hub 上使用,提供一个帐户、一个 API 密钥和一个订阅 + 配额模型,涵盖超过 10,000 个公共 API。您需要使用 Authorization: Bearer YOUR_API_KEY 对每个请求进行身份验证。
在 Zyla API Hub 上开始
打开 Zyla 上的 SofaScore - 实时 API 列表并订阅。您帐户上的第一个 API 包括 7 天的试用或 50 次请求,然后持续使用遵循订阅 + 配额模型(不是按调用付费)。没有免费计划。您将收到一个在此列表中所有端点都有效的 API 密钥。
从这里开始: 开始 7 天的 SofaScore - 实时 API 试用
一般市场信息和帐户创建: Zyla API Hub。
端点概述和示例
获取所有体育
返回所有可用体育的列表。使用此功能为您的体育选择器、顶级导航提供动力,或验证传入的体育 slug。
- 方法:GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports
- 参数:无
- 身份验证:Authorization: Bearer YOUR_API_KEY
curl
curl -s -X GET "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports" \
-H "Authorization: Bearer YOUR_API_KEY"
官方示例 JSON 响应
[
{
"id": 1,
"name": "足球",
"slug": "football"
},
{
"id": 5,
"name": "网球",
"slug": "tennis"
},
{
"id": 2,
"name": "篮球",
"slug": "basketball"
},
{
"id": 64,
"name": "棒球",
"slug": "baseball"
},
{
"id": 23,
"name": "排球",
"slug": "volleyball"
},
{
"id": 63,
"name": "美式足球",
"slug": "american-football"
},
{
"id": 6,
"name": "手球",
"slug": "handball"
},
{
"id": 20,
"name": "乒乓球",
"slug": "table-tennis"
},
{
"id": 4,
"name": "冰球",
"slug": "ice-hockey"
},
{
"id": 22,
"name": "飞镖",
"slug": "darts"
},
{
"id": 72,
"name": "电子竞技",
"slug": "esports"
},
{
"id": 11,
"name": "赛车",
"slug": "motorsport"
},
{
"id": 65,
"name": "骑行",
"slug": "cycling"
},
{
"id": 62,
"name": "板球",
"slug": "cricket"
},
{
"id": 76,
"name": "综合格斗",
"slug": "mma"
},
{
"id": 12,
"name": "橄榄球",
"slug": "rugby"
},
{
"id": 29,
"name": "五人制足球",
"slug": "futsal"
},
{
"id": 31,
"name": "羽毛球",
"slug": "badminton"
},
{
"id": 26,
"name": "水球",
"slug": "waterpolo"
},
{
"id": 19,
"name": "斯诺克",
"slug": "snooker"
},
{
"id": 13,
"name": "澳式足球",
"slug": "aussie-rules"
},
{
"id": 34,
"name": "沙滩排球",
"slug": "beach-volley"
},
{
"id": 109,
"name": "迷你足球",
"slug": "minifootball"
},
{
"id": 7,
"name": "地板球",
"slug": "floorball"
},
{
"id": 15,
"name": "班迪球",
"slug": "bandy"
},
{
"id": 110,
"name": "帕德尔",
"slug": "padel"
}
]
您将使用的字段:
- id:您可以存储以进行内部映射的数字标识符。
- name:用于 UI 标签的人类可读体育名称。
- slug:用于路由、CSS 或查询组合的稳定 URL/组件键。
Python 示例
import os
import requests
API_KEY = os.environ.get("ZYLALABS_API_KEY", "YOUR_API_KEY")
url = "https://zylalabs.com/api/12787/sofascore-live-api/25080/get-all-sports"
headers = {"Authorization": f"Bearer {API_KEY}"}
resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()
sports = resp.json()
# 构建快速查找:slug -> id
slug_to_id = {s["slug"]: s["id"] for s in sports}
# 示例用法
print(f"总体育数量:{len(sports)}")
print(f"足球 id:{slug_to_id.get('football')}")
print("前三个体育:")
for s in sports[:3]:
print(f"- {s["name"]} (id={s["id"]}, slug={s["slug"]})")
搜索所有实体
通过查询字符串在 SofaScore 实体中搜索。将此用于可以通过名称找到团队和相关实体的单个搜索框。
- 方法:GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/25082/search-all-entities
- 参数:
- q(字符串,必需)
- 身份验证:Authorization: Bearer YOUR_API_KEY
curl
响应返回提供查询的匹配实体。使用 id、name、slug 等字段,以及存在的嵌套对象(如国家)来呈现搜索结果。如果您存储搜索结果,请考虑缓存以减少对相同查询的重复调用。
获取国家旗帜
通过代码获取国家旗帜的图像字节,然后在您的 UI 中呈现为 base64 图像或存储到您的 CDN。这对于国家队和比赛非常有用。
- 方法:GET
- URL: https://zylalabs.com/api/12787/sofascore-live-api/31197/get-country-flag
- 参数:
- country_code(字符串,必需)
- 身份验证:Authorization: Bearer YOUR_API_KEY
curl
示例响应(图像字节,base64 编码):
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAELUExURUdwTN/f37QVJd7e3t3d3d/f39/f39/f39/f397e3t7e3t3d3d3d3d3d3d/f397e3t/f39/f39zc3N7e3rQUJN/f37MUJLUTJd/f39/f3+Hh4d3d3bMUJLUVJbQUJLUVJbUUJLcQKOHh4d3d3bQVJLQUJN/f397e3rQVJbIWI7ITI7QUJLcYKM4RJP///97e3rQUJPv7++Li4v39/ebm5uDg4Orq6vDw8OTk5Pf397sTJPn5+bsUJPPz8/Ly8u7u7rcUJMcSJOzs7PHx8cQSJO/v77gUJLgTJOjo6MoSJMETJL8TJLUUJL4TJOvr680RJMsSJMsRJMQTJL0TJO3t7cwRJLYUJM0SJLwUJL4UJDN2488AAAAsdFJOUwB/38+AMBAg79+fcJBAv3CfYKC/YICfj79vr0AwcGCvIF+Pz8+vsKBQULAgUCRTtgAABilJREFUeNrtnGdX40YUhoWrhA1uGFj6tmQ34VrFKl6vzdqYDrtJNvX//5JMkSU3YWk0kiYn3A/CB3zMc+776s54NHMlKV6cfThp756+zeVUErlcq7XbPj48kjKLYqOel9WAkLf3GsXUkcqVA7mDIwiL/FE+qKSItrWndKZBIR6vrz+TuL6excKhbG6lwyR3/ND/eZiM7r6dz8bdaHL/tzPzJmUz4ZyVKtvePzMtu2fAeUCA0bNvde/N+UaCUBteorp2H0gEYpHo210/ZeVkXL7pMxkwjeexUGgDjywBMA/KufKZwmARMj0ZME++bg/mIwwWip7lgm1wBHtFocyxBsCGhVLmgim8zF+md585r15ULB8szyVhrn6WBhAPywfb4JWqJU8xYSEwan6lzMNV5iUAHywAelfKlTg34B5NlQb8sKZKvikxC5hfkyomLJQwM46QRTJPcDTgjeU6TGEawF+TXP8OwB8L4Ip8OIPBNoiAA0gGCy5NpkpBqPQ+JIXlCrnBQqVBclgsXITKMSBJLDCciFyEqhuGKg5WVC5C9RUgaSyArxG4XhEFIQ0sIDPX16GqaGhfccCiOoaoq2Vc2/WwVHGxwNBDjUMlJWRl4IRF60R+3biN5wxmeKr4WNDH…
解码 base64 以进行渲染。对于网页,在字符串前加上 data:image/png;base64, 以获得内联图像;对于移动设备,解码为字节数组并存储在缓存中。
节省时间的生产细节
- 身份验证:在每个请求中发送 Authorization: Bearer YOUR_API_KEY。缺少或无效的密钥返回 401/403 响应。
- 幂等性和安全性:所有列出的端点均为 GET。它们可以安全地从边缘功能或客户端后端调用,并进行适当的身份验证处理。
- 缓存:
- 获取所有体育:目录相对稳定;在您的 API 层或 CDN 中缓存 24 小时。
- 搜索所有实体:结果随时间和上下文变化;对每个唯一查询缓存几分钟,以减少成本和延迟。
- 获取国家旗帜:每个国家代码的 base64 输出是确定性的;积极缓存或存储解码后的图像。
- 分页:不适用于文档中的端点。如果您需要超出此处的更细粒度浏览,请将搜索端点作为主要发现工具。
- 时间戳和时区:此处记录的端点不发出时间戳。如果您将结果与其他系统连接,请将这些响应视为仅元数据,并添加您自己的时间上下文。
- 错误处理:对 5xx 实现重试并退避;除 429 外,不要重试 4xx。记录请求 URL 和查询参数以便调试。
- 安全性:不要在客户端应用程序中嵌入您的 API 密钥。通过您的无服务器或后端服务进行代理,并强制每用户配额。
端到端示例:构建一个搜索优先的体育选择器
- 在启动时调用获取所有体育以呈现体育过滤器。持久化 id、name、slug。
- 将您的全局搜索框连接到搜索所有实体,q 设置为用户的输入。防抖击键入以避免过多调用。
- 在呈现结果时,如果与国家相关,请使用获取国家旗帜并缓存 base64 字符串。
- 按 id 和 slug 记录选择,以便稳定路由和后续丰富。
通过 MCP 从 AI 代理调用 API
如果您与 MCP 兼容的工具集成(例如,开发环境中的代码助手),您可以使用现有密钥通过 Zyla 的 MCP 端点路由相同的 HTTP 调用: https://mcp.zylalabs.com/mcp?apikey=YOUR_API_KEY。这使代理能够调用 SofaScore - 实时 API,而无需在提示中嵌入秘密。有关功能和客户端设置,请参见 MCP 页面。
提示:仅在代理的工具配置中公开您需要的端点(获取所有体育、搜索所有实体、获取国家旗帜),并在服务器端记录调用以便审计。
现实世界使用模式
- 入职:要求用户通过列出获取所有体育响应来选择他们最喜欢的体育;存储所选体育的 id 以便定制供给。
- 搜索框:使用搜索所有实体自动完成团队名称,例如“皇家马德里”,并直接将用户导航到其详细信息屏幕。
- 国际 UI:在团队名称和排名旁边显示旗帜,使用获取国家旗帜;根据端点预期的 alpha2/alpha3 风格代码缓存 base64。
- 路由和 SEO:使用体育 slug(例如,足球、篮球)作为 URL 路径的一部分,以便稳定路由和更清晰的链接。
测试和故障排除
- 烟雾测试:添加一个 CI 检查,调用获取所有体育并验证预期的键(id、name、slug)存在且数组非空。
- 可观察性:记录状态代码、延迟和主体大小;标记任何负载大小的突然增加,以便捕获格式错误的响应。
- 补充:如果您需要为常见国家缓存旗帜,请离线批量调用获取国家旗帜并将图像存储在您的资产存储桶中。
常见问题
我如何对 SofaScore - 实时 API 进行身份验证?
在每个请求中发送带有您的密钥的 Authorization 头:Authorization: Bearer YOUR_API_KEY。
是否有免费计划?
没有免费计划。您在 Zyla 帐户上的第一个 API 包括 7 天的试用或 50 次请求。查看列表以获取当前访问选项。
我可以通过此 API 获取团队徽标或联赛图像吗?
此处记录的端点涵盖体育列表、实体搜索和国家旗帜。有关其他资产,请查看列表页面以获取其他端点;仅在本文中记录的 URL。
获取国家旗帜支持哪些国家代码?
传递端点预期的 country_code 参数。在您的领域模型中验证代码,并缓存成功的结果以避免重复查找。
我可以从前端调用这些端点吗?
使用后端或边缘代理,以便不暴露您的 API 密钥。这些是 GET 端点,因此代理非常简单。
现在开始您的集成:在列表页面上订阅并获取您的密钥,然后粘贴上面的 curl 并进行迭代。从这里开始: 开始 7 天的 SofaScore - 实时 API 试用。如果您需要其他构建块,请在 Zyla API Hub 上浏览更多内容。