現在得到的數據我呼籲來自控制器方法,返回的數據作爲JSON:如何在Laravel中添加響應HTTP數據?
return response()->json([$data]);
我可以添加到這個響應全局數據?併合並這$data
?
比如我有全球$user
對象,我想給遠在每個HTTP響應,以避免在每個方法如下條目:
return response()->json(["data" => $data, "user" => $user]);
現在得到的數據我呼籲來自控制器方法,返回的數據作爲JSON:如何在Laravel中添加響應HTTP數據?
return response()->json([$data]);
我可以添加到這個響應全局數據?併合並這$data
?
比如我有全球$user
對象,我想給遠在每個HTTP響應,以避免在每個方法如下條目:
return response()->json(["data" => $data, "user" => $user]);
創建自己的PHP類或函數來包裝Laravel與響應您的自己的數據。例如:
function jsonResponse($data)
{
return response()->json([
'user' => $user,
'data' => $data,
]);
}
然後,您可以撥打:
return jsonResponse($data);
這是如何讓你的程序DRY只是一個簡單的例子。如果您正在創建一個您期望增長和維護的應用程序,請執行一些更類似this的操作。
@mj你能檢查我的編輯。不確定它是否好,因爲這些問題似乎有點不清楚。 –
@OmisakinOluwatobi是的,編輯作品。它基於這個問題實際上使封裝概念更清晰。 – ryannjohnson
唯一的問題是,如果在這個函數中'$ user'變量實際上是全局的_being accessible_。我希望問題的主人能夠更多地瞭解...... –
@ rnj答案的替代方案是使用中間件。
https://laravel.com/docs/5.4/middleware#global-middleware
這將允許你勾,而不是在請求,而不是使用你可以決定你不想/需要在以後的輔助功能。
的handle
方法爲您的中間件可能類似於:
public function handle($request, Closure $next)
{
$response = $next($request);
$content = json_decode($response->content(), true);
//Check if the response is JSON
if (json_last_error() == JSON_ERROR_NONE) {
$response->setContent(array_merge(
$content,
[
//extra data goes here
]
));
}
return $response;
}
希望這有助於!
你能解釋一下你期望的嗎?已經有答案了,它已經回答你的問題了嗎? –
給出的答案之一是否回答你的問題? –