@mrFlyer

Как в каждый ответ в API добавить данные при выполнении определенных условий?

Привет.

Как в каждый ответ в API добавить данные при выполнении определенных условий?

Например если мы запрашиваем по апи задачи. Отвечаем обычным ResourceCollection со списком задач.
https://domain.com/api/tasks

{"tasks":[{"id":1,"title":"Task1"},{"id":2,"title":"Task2"}]}


Но если в headers запроса есть флаг withConfig, то в ответе появляется массив config:
{"tasks":[{"id":1,"title":"Task1"},{"id":2,"title":"Task2"}],"config":{"userID":"1"}}


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

Как вариант можно все ResourceCollection унаследовать от какого от общего класса, где реализовать это через конструктор. Или можно как то это оптимальнее реализовать через Middleware?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@daniel_wesson
Я бы действительно сделал через middleware типо AttachConfigToResponse
public function handle(Request $request, Closure $next): Response
{
    $response = $next($request);

    $json = $response->getData();
    $json['config'] = ...;

    $response->setData($json);

    return $response;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы