sethsharp / odds-api
这是一个为 odds-api 定制的便捷 Composer 包装器。目前处于 alpha 阶段,包含一些基本端点
Requires
- php: ^8.2
- guzzlehttp/guzzle: ^7.8
- nesbot/carbon: ^3.7
Requires (Dev)
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-02 10:22:14 UTC
README
这是一个为 Odds API 设计的便捷 API 包装器,适用于如 Laravel 这样的 Composer 环境。
关于 "Odds API"
Odds API 是一个简单且非常文档完善的 API,允许快速、低成本集成。它覆盖了超过 70 种运动和 40 多家博彩公司 - 提供持续扩展的服务。Odds API 是一家自 2017 年以来总部位于墨尔本澳大利亚的公司。
为什么制作包装器
包装器简化了像 "Odds API" 这样的强大 API 的使用和实现。它抽象了直接 API 交互的复杂性,为我们开发者提供了一个更友好的界面。
贡献指南
这是一个开源项目,因此欢迎贡献!无论您是想添加新功能、修复错误还是改进文档,您的帮助都将受到赞赏。提交您的 PR 以供审查,我将在可能的情况下尽快审查它们。
运动枚举机会 此包使用枚举来定义您可以传递到端点的运动,这确保了您不会出现拼写错误或不必担心记住确切的语法。目前只有几种运动,如果需要支持更多运动,请提交 PR 添加它们。
安装步骤
Composer
composer require sethsharp/odds-api
发布配置文件
此文件包含客户端需要的一些基本信息,以便成功发起请求
php artisan vendor:publish --tag="odds-api-config"
示例用法
您只需创建一个新的客户端,传递您的 API 密钥即可!您可以选择在 AppServiceProvider
中绑定该类,但如果不这样做,客户端可以轻松地在任何 __invoke
或 __construct
中初始化。
$client = new OddsClient(config('odds-api.api_key')); $response = $client->setRegion('us') ->dateFormat('iso') ->getOddsForSport(SportsEnum::RUGBYLEAGUE_NRL); return $response->json();
此包以这种方式设置,您可以使用链式函数辅助器构建所有需要的参数,因为它们都返回 $this
。一旦调用了一个返回响应的 API 端点,就无法再调用这些函数辅助器。
另一种定义客户端类的方法
您可以在 AppServiceProvider 中在运行时绑定您的客户端类。这使得您可以在类的构造函数中简单地定义客户端,而无需不断传递 API 凭据。
$this->app->bind(OddsClient::class, function () { return new OddsClient(config('odds-api.api_key')); });
那么您的类可能看起来像
use HandlesOddsResponse; public function __invoke(OddsClient $client): Response { $response = $client->setRegion('us') ->getOddsForSport(SportsEnum::RUGBYLEAGUE_NRL); return $this->extractJsonFromResponse($response); }
附加: 在构建客户端时,它将具有一些默认参数
$this->params = [ 'api_key' => $this->apiKey, 'regions' => config('odds-api.default_region'), 'oddsFormat' => config('odds-api.default_odds_format') ];
这避免了在每个请求中定义这些参数,但可以使用相应的类函数(例如; setRegions('au')
)来覆盖它们。
为了帮助管理您的配额,有一些辅助器您可以调用,以返回已使用和剩余的请求数量。检查 UseHandleHeaders
特性,它可以在任何 OddsClient
实例上调用。
此外,如果此 API 在一段时间内过时,并且您需要使用新参数,您可以利用 addParams()
函数,该函数接受一个数组,您可以在其中传递任何新参数。