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