【问题标题】:Generating RESTful responses with Laravel 4使用 Laravel 4 生成 RESTful 响应
【发布时间】:2014-06-18 08:58:17
【问题描述】:

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

【问题讨论】:

    标签: php json angularjs rest laravel-4


    【解决方案1】:

    所以就像你说的,你想返回一个 JSON 响应,例如:

    return Response::json(
            array(
                'status' => 'success',
                'pages' => $modelData->toArray()
            ),
            200
        );
    

    因此,您不必每次都重复此操作,而只需创建一个 createResponse...() 函数,也许在一个基本控制器类中,您可以在所有控制器中调用它。响应失败函数可能类似于:

    function createResponseFailed() {
        return Response::json([
            'error' => [
                'message' => 'Some failed message' 
            ]
        ], 404);
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 2012-12-23
      • 2023-03-14
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多