Статьи

Создание клиента для REST API с помощью PHP

Сегодня мы собираемся создать библиотеку для использования простого RESTfull API для замечательного проекта под названием Gzaas . Разве вы не знаете, что, черт возьми, Гзаас? Гзаас — простая идея, идея моего друга (привет, @ojoven !). Простой проект, который создает интересные сообщения на весь экран. Затем вы можете поделиться ссылкой в ​​Twitter, Facebook и тому подобное. Да. Я теперь , когда я объясняю это, первое слово , которое появляется в нашем сознании является WTF, но это круто, действительно охладиться .

Хорошо. API — это простой RESTfull API , поэтому мы можем использовать его с простым интерфейсом curl. Несколько строк PHP, и он будет работать без сбоев. Но Gzaas классный, поэтому мы тоже собираемся создать крутой интерфейс. В настоящее время я вовлечен в мир TDD, поэтому мы собираемся создать оболочку API с использованием TDD. Давайте начнем.

Первая версия Gzaas API очень проста. Это позволяет создавать новые сообщения, а также мы можем перечислить весь набор доступных стилей, шаблонов и шрифтов. Идея состоит в том, чтобы построить что-то настолько модульное, насколько мы можем. Вероятно (я надеюсь, что так) Gzaas будет включать новые функции в будущем, поэтому мы не хотим создавать монолитную библиотеку. Мы собираемся начать со шрифтов. Как мы видим из документации, нам нужно выполнить запрос GET, чтобы получить полный список доступных шрифтов. Там есть важный параметр (nowFeatured), чтобы показывать только избранные шрифты (самые крутые).

use Gzaas\Api;
$fonts = Api\Fonts::factory()->getAll(Api::FEATURED);

Итак, мы собираемся написать простой тест для тестирования нашего API шрифтов.

$this->assertTrue(count($fonts) > 0);

С помощью этого теста мы собираемся тестировать шрифты, но мы также можем тестировать стили и шаблоны.

public function testFonts()
{
    $fonts = Api\Fonts::factory()->getAll(Api::FEATURED);
    $this->assertTrue(count($fonts) > 0);
}

public function testStyles()
{
    $styles = Api\Styles::factory()->getAll(Api::FEATURED);
    $this->assertTrue(count($styles) > 0);
}

public function testPatterns()
{
    $patterns = Api\Patterns::factory()->getAll(Api::FEATURED);
    $this->assertTrue(count($patterns) > 0);
}

Хорошо, теперь мы собираемся проверить создание gzaas. Мы будем использовать случайный шрифт, стиль и шаблон:

$font    = array_rand((array) Api\Fonts::factory()->getAll(Api::FEATURED));
$style   = array_rand((array) Api\Styles::factory()->getAll(Api::FEATURED));
$pattern = array_rand((array) Api\Patterns::factory()->getAll(Api::FEATURED));

Поехали:

$gzaas = new Api();
$url = $gzaas->setApiKey('mySuperSecretApiKey') // Get one valid at http://gzaas.com/project/api-embed/api-key
    ->setFont($font)
    ->setBackPattern($pattern)
    ->setStyle($style)
    ->setColor('444444')
    ->setBackcolor('fcfcee')
    ->setShadows('1px 0 2px #ccc')
    ->setVisibility(0)
    ->setLauncher("testin gzaas API");

Как мы видим, наша библиотека имеет гибкий интерфейс (мне нравится гибкий интерфейс). Это легко реализовать. Нам нужно только вернуть экземпляр объекта (вернуть $ this;) в каждой функции установки.

Gzaas API возвращает URL-адрес созданного gzaas в случае успеха, поэтому переменная $ url должна отличаться от пустой строки. Давайте проверим это:

$this->assertTrue($url != '');

Чтобы использовать эту библиотеку, нам нужно включить следующие файлы:

require_once __DIR__ . '/Api/ApiInterface.php';
require_once __DIR__ . '/Api/Network.php';
require_once __DIR__ . '/Api/ApiAbstract.php';
require_once __DIR__ . '/Api/Fonts.php';
require_once __DIR__ . '/Api/Patterns.php';
require_once __DIR__ . '/Api/Styles.php';
require_once __DIR__ . '/Api.php';

из-за этого есть простой файл bootstrap.php для включения всех файлов. Но мы собираемся сделать шаг вперед. Мы собираемся создать архив phar со всей библиотекой внутри. Создание phar архива очень просто. Нам нужен файл index.php с начальной загрузкой (он должен заканчиваться на __HALT_COMPILER ();) 

include dirname(__FILE__) . '/Api/ApiInterface.php';
include dirname(__FILE__) . '/Api/Network.php';
include dirname(__FILE__) . '/Api/ApiAbstract.php';
include dirname(__FILE__) . '/Api.php';
include dirname(__FILE__) . '/Api/Fonts.php';
include dirname(__FILE__) . '/Api/Patterns.php';
include dirname(__FILE__) . '/Api/Styles.php';

__HALT_COMPILER();

и программа buildPhar создаст наш файл phar:

#!/usr/bin/env php
buildFromDirectory($location);

И это все. Теперь мы можем использовать файл bootstrap.php, чтобы включить библиотеку, или мы также можем включить файл phar:

include 'Gzaas/Gzaas.phar';

Вы можете раскошелиться на github здесь . Не стесняйтесь просматривать код и скажите нам, что вы думаете?

От http://gonzalo123.wordpress.com/2011/08/01/building-a-client-for-a-rest-api-with-php/