mar*_*ark 5 php api response laravel laravel-5
我正在使用laravel构建api,问题是客户端通过调用create()函数请求我的api,并且create()函数将调用getValidatedData()函数,如果验证,我想将验证错误返回给客户端失败,或者如果通过验证,则返回验证数据以插入数据库,到目前为止,我的getValidatedData函数如下所示
protected function getValidatedData(array $data)
{
// don't format this class since the rule:in should avoid space
$validator = Validator::make($data, [
'ID' => 'required',
'weight' => 'required',
]);
if ($validator->fails()) {
exit(Response::make(['message' => 'validation fails', 'errors' => $validator->errors()]));
}
return $data;
}
Run Code Online (Sandbox Code Playgroud)
我认为exit()不是将错误消息返回给客户端的好方法。还有什么其他方法可以直接在内部函数中将laravel响应返回给客户端。使用抛出异常?
这就是Laravel 5.4中对我有用的东西
protected function innerFunction()
{
$params = [
'error' => 'inner_error_code',
'error_description' => 'inner error full description'
];
response()->json($params, 503)->send();
}
Run Code Online (Sandbox Code Playgroud)
你可以做的是使用send方法,所以你可以使用:
if ($validator->fails()) {
Response::make(['message' => 'validation fails', 'errors' => $validator->errors()])->send();
}
Run Code Online (Sandbox Code Playgroud)
但请注意,这不是最好的解决方案,更好的方法是抛出这些数据的异常并在Handler类中添加处理它。
编辑
作为用法示例:
public function index()
{
$this->xxx();
}
protected function xxx()
{
\Response::make(['message' => 'validation fails', 'errors' => ['b']])->send();
dd('xxx');
}
Run Code Online (Sandbox Code Playgroud)
假设该index方法是控制器中的方法,您将得到响应 json 并且dd('xxx');不会被执行