Д
1. В приложении три группы роутов. В каждой группе данные должны выводиться в своем формате.
2. Автоматическое форматирования контента по заголовку или параметру риквеста.
3. Работа с сырыми данными. Допустим ты хочешь все обернуть в следующий формат
{"status": "success", "data" : {"name" : "Vasya"}}
, при этом экшин контроллера у тебя возвращает массив ["name" => "Vasya"]
. Обернуть нужно во всех роутах группы.4. На группу выставлен один формат, допустим xml, один роут из группы нужно вывести в json
Если сможешь как минимум решить эти кейсы, то можно будет рассмотреть твой вариант.
А общие рассуждения пока не интересуют, сделаешь - покажешь.
2. Форматирование чего?
3. Над этим не думал даже, но это в 100% лишняя завязка, вот почему:
есть rpc протокол, где мы отправляем практически всегда следующие ответы:
{id: 1, result: {...}, error: null}
всё, что мы возвращаем из экшенов летим в
result
.как быть, если хотим менять id? а если error? пишем кастомные обработчики этих моментов с еще раз кастомным Response? ну такое.
хочешь стандартизировать формат ответа, используй объект, который делает эту работу.
о чем я: если нужно всегда делать
{id: 1, result: {...}, error: null}
, тогда делаем в контроллереreturn RPCResponseObject($data, $id, $error);
- это явно и понятно. опять же, если это делать в каждом экшене, то это будет система, а нам нужно избегать систематических лишний действие - оборачивает в middleware и всегда возвращаем из контроллера массив с максимум 3 элементамиreturn [$data, $id, $error];
Как правильно обернуть это, чтобы дальше конвертить в Response нужно обдумать.