Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Создание простого REST-приложения на Silex

Anna | 31.05.2014 | нет комментариев

В этой статье мы сделаем примитивное REST приложение на Silex, начав с установки Silex и завершив созданием нескольких маршрутов приложения.

Давайте начнём

Для этого примера я буду применять каталог с именем toyshop

Установка Silex

Есть несколько методов установки Silex, но давайте используем для этого Composer.
Внутри вашей рабочей директории исполните команду:

composer require silex/silex ~1.1

С поддержкой этой команды вы дали команду Composer сделать следующее:

  • require добавляет новейший пакет к плану
  • silex / silex имя пакета в формате подрядчик(vendor)/пакет(package)
  • ~ 1.1 — версия пакета, ~ 1.1 обозначает >= 1.1, <2,0

Когда Вы запустите эту команду, Вы увидите, что Composer установит также и библиотеки, которые Вы не запрашивали, — не беспокойтесь, так и должно было случиться, так как Silex требует наличия этих библиотек, для правильной работы.

Как только команда завершит выполнение, вы получите следующую файловую конструкцию, приведённую ниже:

toyshop/
       composer.json
       composer.lock
       vendor/
             ...

Каждый код Silex хранится внутри папки vendor, а 2 файла Composer’a содержат информацию о том, какие пакеты и версии библиотек установлены.

Composer.json

Давайте посмотрим вовнутрь composer.json, он должен выглядеть приблизительно так:

{
    "require": {
        "silex/silex": "~1.1"
    }
}
Composer.lock

Данный файл содержит список всех установленных пакетов, а также их версии. Это дюже благотворно, от того что это обозначает, что Вы сейчас не обязаны делать commit папки vendor/, когда заливаете план в репозиторий — все библиотеки, нужные для правильной работы приложения, могут быть установлены на основе этого файла. Вам лишь нужно залить в репозиторий файлы composer.json и composer.lock и тогда, как только код будет извлечен из репозитория, Вы можете легко запустить команду composer install иComposer сам установит нужные библиотеки указанных версий.

Создание маршрутов

Так как наше приложение — это магазин игрушек, давайте подумаем, что нам будет необходимо. Люди, которые будут заходить на наш сайт, захотят увидеть презенты, значит давайте сотворим маршрут, тот, что дозволит получить список презентов.

Давайте сотворим файл index.php. Добавим в него код, Дабы он выглядел дальнейшим образом:

<?php
 require_once __DIR__.'/vendor/autoload.php';

 $app = new Silex\Application();
 // Please set to false in a production environment
 $app['debug'] = true;

 $toys = array(
     '00001'=> array(
        'name' => 'Racing Car',
        'quantity' => '53',
        'description' => '...',
        'image' => 'racing_car.jpg',
    ),
    '00002' => array(
        'name' => 'Raspberry Pi',
        'quantity' => '13',
        'description' => '...',
        'image' => 'raspberry_pi.jpg',
    ),
);

$app->get('/', function() use ($toys) {
    return json_encode($toys);
});

$app->get('/{stockcode}', function (Silex\Application $app, $stockcode) use ($toys) {
    if (!isset($toys[$stockcode])) {
        $app->abort(404, "Stockcode {$stockcode} does not exist.");
    }
    return json_encode($toys[$stockcode]);
});

$app->run();

Сейчас у нас объявлено 2 маршрута: / и /{stockcode}

Маршрут /

Это маршрут для приобретения списка всех игрушек. Все, что делает данный способ — это кодирует данный вJSON и возвращает закодированные данные в качестве результата на запрос.

Дабы позволить неизвестной функции доступ к массив $toys мы обязаны импортировать его, добавивuse($toys) в конце определения неизвестной функции, но до открытия скобки {.

Маршрут /{stockcode}

Это маршрут для приобретения информации о определенной игрушке, которая идентифицируется параметромstockcode. Как Вы видете, что это в этом маршруте применяется функция с чуть больше трудным заголовком.

Наравне с use($toys) мы передаем пару переменных в саму функцию: Silex\Application $app и $stockcode.

Silex\Application $app — это объект приложения Silex и с его поддержкой мы можем вывести прекрасную страницу ошибки 404, если был передан неверный stockcode.

$stockcode — идентификатор игрушки, информацию о которой мы хотим получить. Как Вы видете, эта переменная соответствует {stockcode}, тот, что есть в описанном нами маршруте.

Тестируем приложение

Позже настройки веб-сервера для маршрутизации всех запросов через index.php дозволено перейти к маршрутам с поддержкой http://toyshop/ и http://toyshop/00001 и увидеть итог, тот, что вернёт всякий из этих запросов.

Скажем, http://toyshop/00001 вернёт:

{"name":"Raspberry Pi","quantity":"13","description":"...","image":"raspberry_pi.jpg"}

Результат возвращает в комфортном формате, подходящем для применения в Вашем интернет-магазине либо мобильном приложений. Всё, что нужно сделать, это исполнить над этими данными функцию json_decode и отобразить данные в комфортном формате, скажем, HTML.

Отчего Silex?

Отличный вопрос.
Результат: от того что это микро-фреймворк, он не принуждает меня писать в своём

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB