and*_*ber 1 response request filter laravel laravel-4
我有一个过滤器。我希望此过滤器仅在页面显示 HTML 时起作用,而不是在 json 或任何其他格式时起作用
App::after(function($request, $response)
{
if( $request->getMethod() == 'GET' && $request->getRequestFormat() == 'html' ) {
// do something!
}
});
Run Code Online (Sandbox Code Playgroud)
在我的控制器函数中,我返回 json 数据:
return Response::json($data);
Run Code Online (Sandbox Code Playgroud)
但是,$request->getRequestFormat()仍然等于“html”,但它不应该等于。
我知道我可以将格式设置为“json”,如下所示:
Request::setRequestFormat('json');
return Response::json($data);
Run Code Online (Sandbox Code Playgroud)
但这似乎是多余的。如果我返回 aResponse::json它应该知道它是 json 而不是 HTML。我怎样才能检测到它是一个Response::json?
requestFormat 不是自动设置的 - 您可以通过编程方式提供它setRequestFormat,也可以通过包含 POST/GET 参数来提供它_format。
如果你想检查请求是否是 JSON,你可以这样做$request->isJson(),但在我看来,你更像是在尝试检查响应是否是JSON?在这种情况下你可以做$response instanceof Illuminate\Http\JsonResponse或$response->headers->get('Content-Type') == 'application/json'
| 归档时间: |
|
| 查看次数: |
3278 次 |
| 最近记录: |