我正在尝试return Response::json('data', $request);
但是,我收到了一个错误:
ProjectsController.php第74行中的FatalErrorException: 调用未定义的方法Illuminate \ Http \ Response :: json()
Response::json()
位于何处?我做错了什么?
答案 0 :(得分:46)
使用laravel 5.1中的辅助函数:
return response()->json(['name' => 'Abigail', 'state' => 'CA']);
这将创建\Illuminate\Routing\ResponseFactory
的实例。有关可能的参数,请参阅phpDocs:
/**
* Return a new JSON response from the application.
*
* @param string|array $data
* @param int $status
* @param array $headers
* @param int $options
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function json($data = array(), $status = 200, $headers = array(), $options = 0){
return \Illuminate\Routing\ResponseFactory::json($data, $status, $headers, $options);
}
答案 1 :(得分:10)
经过足够的谷歌搜索后,我发现控制器的答案只需要像return \Response::json(['success' => 'hi, atiq']);
这样的反斜杠。或者你可以返回数组return array('success' => 'hi, atiq');
,它将在Laravel 5.2版中呈现为json。
答案 2 :(得分:3)
您需要在文件的标头中添加 use Response;
外观。
只有这样您才能使用
成功检索数据return Response::json($data);
答案 3 :(得分:1)
从控制器中,您还可以返回一个Object / Array,它将作为JSON响应发送(包括正确的HTTP头)。
public function show($id)
{
return Customer::find($id);
}
答案 4 :(得分:0)
尽管Response::json()
在最近并不流行,但这并不能阻止您和我使用它。
实际上,您不需要任何外观即可使用它,
代替:
$response = Response::json($messages, 200);
使用此:
$response = \Response::json($messages, 200);
使用斜杠,您肯定走的很好。
答案 5 :(得分:0)
但是,对于某些程序员来说,先前的答案仍然可能令人困惑。最特别是初学者,他们很可能使用的是旧书或教程。 也许您仍然觉得需要立面。当然可以使用。 对于我来说,我仍然很喜欢使用外观,这是因为有时在构建我的api时,我忘记在Response之前使用“ \”。
如果你像我, 只需添加
"use Response;"
在您的课程之上...扩展了contoller。 这应该做。
现在您可以使用:
$response = Response::json($posts, 200);
代替:
$response = \Response::json($posts, 200);