我正在使用AngularJS构建一个应用程序,该应用程序与Laravel 4中开发的REST API进行对话。
到目前为止,我已经通过让每个请求发送允许Angular与API通信的相关Access-Control标头做了一个良好的开端,并且我还构建了UserController
资源:
Route::resource('users', 'UserController');
然而现在我似乎面临着一堵墙。对于学习机会,我希望使用良好的标准正确构建此REST API,并且我试图找出如何做出响应。
我知道我想从API返回JSON,据我所知,我应该在data
字段中包含每个响应,而且我也意识到我可以在我的底部使用类似的东西来做控制器动作:
return Response::json(array(
'data' => array(
'users' => array(
array(
'username' => 'Bob',
'email' => 'bob@gmail.com'
)
)
),
'status' => 200,
'success' => true
),
200
);
但是,我不想在我的应用程序中的每个控制器操作中重复这种逻辑,因此我想知道如何使代码更干,以便在我的控制器结束时可以做这样的事情:
return array(
'users' => array(
array(
'username' => 'Bob',
'email' => 'bob@gmail.com'
)
)
);
在我的应用程序中的其他地方我可以执行Response::json
的操作。有什么想法吗?
答案 0 :(得分:3)
就像你说的那样,你想要返回一个JSON响应,例如:
return Response::json(
array(
'status' => 'success',
'pages' => $modelData->toArray()
),
200
);
因此,您不必每次都重复此操作,而只需在基本控制器类中创建一个createResponse ...()函数,您可以在所有控制器中调用它。响应失败的功能可能类似于:
function createResponseFailed() {
return Response::json([
'error' => [
'message' => 'Some failed message'
]
], 404);
}
这只是一个简单的例子,但说明了这一点。希望它有所帮助!