Спокойные PHP-фреймворки, поддерживающие Ресурсы, методы и форматы


Похоже, существует множество фреймворков PHP, которые утверждают, что шаблоны проектирования RESTful.

Я ищу структуру, которая делает очень хорошую работу, обеспечивая надежное решение для этих трех пунктов (или их эквивалентности).

1. Запросы на ресурсы

Первое, что нужно сделать, это иметь возможность обрабатывать URL для разрешения ресурсов.

/path/to/resource = controller.action()

2. Методы запроса

Второе - обрабатывать различные типы запросов методы.

GET /path/to/resource  = controller.get()
POST /path/to/resource = controller.post()

Возможно, с резервным вариантом универсального обработчика, если ни один метод запроса не соответствует.

GET /path/to/resource  = controller.action()
PUT /path/to/resource  = controller.action()
POST /path/to/resource = controller.action()

3. Форматы ответов

Наконец, я видел, как люди прикрепляли форматы к концу URL-адресов, чтобы помочь платформе узнать, какой тип ответа ожидается.

/path/to/resource.html
/path/to/resource.json

Другими способами люди передают формат ответа в заголовке или в виде параметра URI (?format=json).

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

Author: Xeoncross, 2011-12-17

2 answers

Я исследовал подобную структуру, но, похоже, в мире PHP мало что происходит. Здесь связан вопрос о фреймворках PHP REST.

Выемка выглядит интересно, и я нашел новые контроллеры REST и маршрутизаторы платформы Zend довольно полезными. Я также начал внедрять более простой подход поверх компонентов Zend. В основном вы регистрируете набор средств визуализации представлений (HTML, JSON и простая форма XML поддерживаются из коробки, с помощью синтаксического анализа заголовка accept или перезаписи его форматом=? параметр) и анализаторы тела (включены веб-фомы и JSON) и на основе этого интерфейса:

interface Feathry_Rest_Resource
{
    public function index($params = null);
    public function get($id, $params = null);
    public function post($data, $params = null);
    public function put($data, $id = null, $params = null);
    public function delete($id, $params = null);
}

Где каждый метод возвращает простой массив или объект (с помощью метода toArray), вы можете создать ресурс RESTful. Преимущество в том, что ваши ресурсы полностью отделены от любого представления. Им даже не нужно знать, что они используются через HTTP, пока они следуют интерфейс. Это все еще очень альфа-версия, и, похоже, к ней не было особого интереса, но она действительно работает, так что, возможно, вы захотите попробовать.

 1
Author: Daff, 2017-05-23 12:14:38

Выемка имеет интересный подход, использующий аннотации для определения маршрута.

Если вы используете PHP 5.3, то Tonic - это очень легкий фреймворк с акцентом на ОТДЫХ. Он также использует аналогичный стиль для выемки с использованием блоков документов для маршрутизации.

Лично я использую Zend Framework с пользовательской версией их zend_rest_route.

Каждый из них также каким-то образом обеспечивает некоторую обработку форматов ответов, позволяя вам обеспечьте согласование содержимого не только на основе описанного вами метода, но и с помощью поля заголовка Accept, чтобы определить, какие форматы будут понятны клиенту. Мой личный подход в ZF состоял в том, чтобы работать со структурой данных (в основном ArrayObject) С пользовательскими сериализаторами для JSON, XML, YAML и т. Д. И заставить контроллер определить наилучший формат вывода для использования.

 0
Author: cmbuckley, 2011-12-17 17:58:08