目前,我返回的数据如下(基本示例):
public function index()
{
return User::all();
}
但是,我想用一些额外的元数据包装我的响应,使它们看起来像这样:
{
'success': true,
'data': {
... // Normal response
}
}
成功价值将像statusCode == 200
一样简单。
我已经读过关于使用响应宏、响应工厂、中间件之后、分形库等的信息
理想情况下,它将适用于所有响应,例如返回雄辩模型和集合,以及Response::json($data)
。
在 Laravel 5.2 时代,实现这一目标的最佳/正确方法是什么?
谢谢。
如果你正在为Laravel开发API,我建议你看看Dingo。它是开发 API 最有用的软件包之一。Dingo使用Fractal来转换响应。在应用程序中添加此类元数据,可以在 Dingo 中使用变形金刚。您还可以收听和修改数据的许多事件。在您的特定示例中,ResponseWasMorphed
将是您将收听的事件之一。
如果要在不添加外部包的情况下继续项目,则可以覆盖BaseController
中的response()
方法,该方法可以检查并添加所需的内容。
public function response($data, $status)
{
//calculate parameter based on $status
$success = ...
return response(array_merge($data, ['success' => $success]));
}
您可以使用分形包来实现这一点。然后,您可以通过转换器运行响应并获得正确的响应。这是它的包。https://packagist.org/packages/league/fractal