sethsharp/odds-api

这是一个为 odds-api 定制的便捷 Composer 包装器。目前处于 alpha 阶段,包含一些基本端点

v1.0.0-alpha.1.4.4 2024-08-02 10:11 UTC

README

Tests Latest Version on Packagist Total Downloads

这是一个为 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() 函数,该函数接受一个数组,您可以在其中传递任何新参数。

致谢