1. Go to this page and download the library: Download keboola/php-api-client-base library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
keboola / php-api-client-base example snippets
use GuzzleHttp\Psr7\Request;
use Keboola\ApiClientBase\ApiClient;
use Keboola\ApiClientBase\ApiClientOptions;
use Keboola\ApiClientBase\Auth\StorageApiTokenAuthenticator;
use Keboola\ApiClientBase\ErrorMessageResolverInterface;
use Keboola\ApiClientBase\Json;
use Keboola\ApiClientBase\ResponseModelInterface;
final class WidgetModel implements ResponseModelInterface
{
public function __construct(public readonly string $id) {}
public static function fromResponseData(array $data): static
{
\assert(is_string($data['id']));
return new self($data['id']);
}
}
final class MyServiceErrorResolver implements ErrorMessageResolverInterface
{
public function __invoke(string $responseBody, int $statusCode): ?string
{
/** @var array{error?: string} $data */
$data = json_decode($responseBody, true) ?? [];
return isset($data['error']) && $data['error'] !== '' ? $data['error'] : null;
}
}
final class MyServiceClient
{
private ApiClient $apiClient;
public function __construct(
string $baseUrl,
StorageApiTokenAuthenticator $authenticator,
?ApiClientOptions $options = null,
) {
$this->apiClient = new ApiClient(
$baseUrl,
$authenticator,
$options,
errorMessageResolver: new MyServiceErrorResolver(),
retryableStatusCodes: [429],
);
}
public function createWidget(string $name): WidgetModel
{
return $this->apiClient->sendRequestAndMapResponse(
new Request('POST', 'widgets', ['Content-Type' => 'application/json'], Json::encodeArray(['name' => $name])),
WidgetModel::class,
);
}
}
$client = new MyServiceClient(
'https://my-service.keboola.com',
new StorageApiTokenAuthenticator($storageApiToken),
new ApiClientOptions(backoffMaxTries: 3),
);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.