Hi! In this article I want to demostrate the way you can create PHP clients to the REST APIs. And the example will be for Jira REST API.
First of all I shall use my package wich will help me in this quest.
First of all we need class wich will represent connection to tha API. IT will not be a real connection but it will contain all necessary information for performing requests to the API:
class Connection
{
private $connection = null;
/**
* Connection to the Jira REST API
*
* @param string $url
* jira server URL
* @param string $login
* user login
* @param string $token
* access token. See this page https://confluence.atlassian.com/cloud/api-tokens-938839638.html for more information
*/
public function __construct(string $url = '', string $login = '', string $token = '')
{
if ($url !== '') {
$this->connect($url, $login, $token);
}
}
/**
* Connection to the Jira REST API
*
* @param string $url
* jira server URL
* @param string $login
* user login
* @param string $token
* access token. See this page https://confluence.atlassian.com/cloud/api-tokens-938839638.html for more information
*/
public function connect(string $url, string $login, string $token): void
{
$this->connection = new CustomClient($url, [
'Authorization: Basic ' . base64_encode($login . ':' . $token)
]);
}
/**
* Method sends GET request to Jira server
*
* @param string $endpoint
* endpoint to REST method
* @return object result
*/
public function sendGetRequest(string $endpoint): object
{
// trait string as JSON object
return json_decode($this->connection->sendGetRequest($endpoint), false);
}
}
Quite simple yeah? )
Now let's fetch some projects as a proof that our class works fine:
class ProjectsRepository extends ArrayObject
{
/**
* Connection to Jira
*
* @var Connection
*/
private $connection = null;
/**
* Constructor
*
* @param Connection $connection
* connection to Jira
*/
public function __construct(Connection $connection)
{
$this->connection = $connection;
}
/**
* Method loads list of projects from server
*/
public function loadProjects(): void
{
// initial setup
$result = [];
$startAt = 0;
// main loop
do {
// reading data
$page = $this->connection->sendGetRequest('/project/search/?startAt=' . $startAt);
// and here we read all projects in loop
} while (! $page->isLast);
}
}
As I've said earlier it is quite easy )
PS you can download the full package with the example of Jira Client via this link.
Learn more
More information can be found here:
Top comments (0)