TeamleaderApiClient
Added LICENSE
更新後的 API 用戶端目前正在 v2 分支開發中
用於連接到 Teamleader API 的 PHP 用戶端。
該軟體包可透過 Composer 取得:
$ composer require nascom/teamleader-api-client
首先,您需要提供一個可以發出 HTTP 請求的用戶端。它必須實作HttpClientInterface
。軟體包中已經提供了使用 Guzzle 的客戶端。這需要安裝 guzzlehttp/guzzle。
<?php
use Nascom TeamleaderApiClient Http HttpClient GuzzleHttpClient ;
$ guzzle = new GuzzleHttp Client ([ ' base_uri ' => ' https://www.teamleader.be/api/ ' ]);
$ httpClient = new GuzzleHttpClient ( $ guzzle );
您可以使用此 HttpClient 實例化實際的 API 用戶端。您還必須提供您的 Teamleader API 憑證。
<?php
use Nascom TeamleaderApiClient Http ApiClient ApiClient ;
$ teamleaderParameters = [
' api_group ' => ' 12345 ' ,
' api_secret ' => ' XXXXXXXXXXXXXXX '
];
$ client = new ApiClient (
$ httpClient , // A client implementing HttpClientInterface.
$ teamleaderParameters // An array containing the Teamleader credentials.
);
每個 API 端點都有一個對應的 Request 類別。這些類別必須傳遞給客戶端的handle()
方法,該方法將傳回一個Response物件。所有可用的請求都可以在這裡找到。
例如,以下是獲取專案詳細資訊的方法:
<?php
use Nascom TeamleaderApiClient Request Project RetrieveProjectRequest ;
$ projectRequest = new RetrieveProjectRequest ( 23 );
$ response = $ client -> handle ( $ projectRequest );
echo $ response -> getData (); // Returns the Teamleader JSON response as a string.
額外的選項可以傳遞給 ApiClient。這些將與一些預設選項合併,並在發出請求時傳遞給 HttpClient。
<?php
$ client = new ApiClient (
$ httpClient ,
$ teamleaderParameters ,
[ ' connect_timeout ' => 5.0 ] // This will override the default timeout.
);
您可以建立自訂 HttpClient 來處理請求。它所要做的就是實作HttpClientInterface
。例如,您可以使用curl 實作客戶端。
<?php
use Nascom TeamleaderApiClient Http HttpClient HttpClientInterface ;
class CurlHttpClient implements HttpClientInterface
{
public function request ( $ method , $ uri , array $ options = [])
{
$ curl = curl_init ();
curl_setopt_array ( $ curl , array (
CURLOPT_RETURNTRANSFER => 1 ,
CURLOPT_URL => ' https://www.teamleader.be/api/ ' . $ uri ,
CURLOPT_POST => 1 ,
CURLOPT_POSTFIELDS => $ options [ ' form_params ' ]
));
$ response = curl_exec ( $ curl );
curl_close ( $ curl );
return $ response ;
}
}
$ client = new ApiClient (
new CurlHttpCLient (),
$ teamleaderParameters
);