DEV Community

loading...
Cover image for Example of fast creation of PHP client for Jira REST API.

Example of fast creation of PHP client for Jira REST API.

alexdodonov
PHP developer
Updated on ・2 min read

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

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);
    }
}
Enter fullscreen mode Exit fullscreen mode

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:

Twitter
Mezon Framework

Discussion (0)