Я ищу рекомендации от опытных разработчиков Lumen / Laravel для решения следующей задачи: я хочу, чтобы все ответы проходили через один класс / метод.
Я пишу небольшой API с использованием Lumen, и нет проблем с возвратом JSON, однако я не хочу иметь return response()->json(['name' => 'Abigail', 'state' => 'CA']);
в каждом методе, который возвращает.
Что делать, если позже есть бизнес-случай, где мне нужно добавить token => 'secret'
абсолютно все конечные точки? Поэтому я хотел бы иметь единую точку выхода и задаться вопросом, что является лучшим для достижения этой цели.
Промежуточное? Можно ли перехватить все непосредственно перед тем, как его вернуть? Я знаю, что у нас есть промежуточное промежуточное программное обеспечение, однако оно запускается после отправки ответа в браузер.
Я ищу вариант написания своего собственного помощника или есть основная функция Lumen / Laravel, поддерживающая эту потребность?
Laravel поддерживает макросы ответов, которые позволяют вам изменять ваши ответы любым удобным для вас способом.
Вы можете найти документацию для этого здесь: https://laravel.com/docs/5.5/responses#response-macros
По сути, это позволяет вам изменять любой ответ, который вызывает макрос, практически любым способом, который вы выберете.
Так что, если вы хотите добавить токен в ваши запросы, вы можете сделать
public function boot()
{
Response::macro('myresponse', function ($value) {
$token = getTokenFromSomwehere();
return Response::make([
'token' => $token,
'user' => $value['user'],
etc...
]);
});
}
затем при возврате ответа в вашем приложении return response()->myresponse($values)
Других решений пока нет …