Laravel API返回json响应

时间:2018-02-15 18:49:19

标签: php json laravel

我正在开发和学院项目,它应该是一个服务平台和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消息处理?它会帮助我很多。

非常感谢你阅读。

2 个答案:

答案 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')
            ]);
    }

}