使用Laravel 4生成RESTful响应

时间:2014-05-01 19:36:38

标签: php json angularjs rest laravel-4

我正在使用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的操作。有什么想法吗?

1 个答案:

答案 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);
}

这只是一个简单的例子,但说明了这一点。希望它有所帮助!