我正在开发和学院项目,它应该是一个服务平台和Web和Mobile Front-En。我决定使用Laravel 5.1,我的想法是使用laravel作为一个优秀的硬核php后端来服务这个平台,我想用laravel开发APIsRest并在网络和移动前端上提供服务。我的观点是:我不想使用刀片模板引擎,因为返回"视图,实例对象等"我的移动前端不会理解响应,这就是为什么我想让我的API定向返回JSONs消息,所以我可以在每个前端处理它们。
1)首先,我想问你们,这是不是一个好主意? 2)如何检索laravel发送的错误php消息,将它们作为JSON发送回视图(mobile-web front)?
示例:现在我正在尝试完成"登录注册"我项目的模块。我试图利用Authentication Laravel模块的优势,现在我在postLogin上堆栈,因为我不知道如何处理错误并将其作为JSON发送回前面。
public function postIngresar(Request $request)
{
$throttles = $this->isUsingThrottlesLoginsTrait();
if ($throttles && $this->hasTooManyLoginAttempts($request)) {
return response()->json(*$this->sendLockoutResponse($request));
}
$credentials = $this->getCredentials($request);
if (Auth::attempt($credentials, $request->has('remember'))) {
return response()->json([
'success' => 'true',
'message' => 'Logeo logrado exitosamente'
]);
}
if ($throttles) {
$this->incrementLoginAttempts($request);
}
return response()->json($this->getFailedLoginMessage());
}
有没有办法将所有错误和异常作为JSON消息处理?它会帮助我很多。
非常感谢你阅读。
答案 0 :(得分:1)
您可以阅读有关Laravel文档的Exception Handling
部分,但为了节省您的时间,这里是负责返回错误的json表示的方法的名称:
所有异常都由 App \ Exceptions \ Handler 类处理。此类包含两种方法:报告和呈现。 render 方法负责将给定的异常转换为应该发送回浏览器的HTTP响应。默认情况下,异常将传递给基类,后者会为您生成响应。但是,您可以自由检查异常类型或返回自己的自定义响应
答案 1 :(得分:1)
LoginController
使用AuthenticatesUsers
特征,该特征具有方法sendFailedLoginResponse
,该方法负责在身份验证失败时重定向错误消息,如下所示:
protected function sendFailedLoginResponse(Request $request)
{
if ( ! User::where('email', $request->email)->first() ) {
return response()->json([
$this->username() => Lang::get('auth.email')
]);
}
if ( ! User::where('email', $request->email)->where('password', bcrypt($request->password))->first() ) {
return response()->json([
'password' => Lang::get('auth.email')
]);
}
}