Dennis Braga Dennis Braga - 3 months ago 39x
JSON Question

How can I make Laravel return a custom error for a JSON REST API

I'm developing some kind of RESTful API. When some error occurs, I throw an

App::abort($code, $message)

The problem is: I want him to throw a json formed array with keys "code" and "message", each one containing the above mentioned data.

[code] => 401
[message] => "Invalid User"

Does any one knows if it's possible, and if it is, how I do it?


go to your app/start/global.php.

This will convert all errors for 401 and 404 to a custom json error instead of the Whoops stacktrace. Add this:

App::error(function(Exception $exception, $code)

    $message = $exception->getMessage();

    // switch statements provided in case you need to add
    // additional logic for specific error code.
    switch ($code) {
        case 401:
            return Response::json(array(
                    'code'      =>  401,
                    'message'   =>  $message
                ), 401);
        case 404:
            $message            = (!$message ? $message = 'the requested resource was not found' : $message);
            return Response::json(array(
                    'code'      =>  404,
                    'message'   =>  $message
                ), 404);        


This is one of many options to handle this errors.

Making an API it is best to create your own helper like Responser::error(400, 'damn') that extends the Response class.

Somewhat like:

public static function error($code = 400, $message = null)
    // check if $message is object and transforms it into an array
    if (is_object($message)) { $message = $message->toArray(); }

    switch ($code) {
            $code_message = 'error_occured';

    $data = array(
            'code'      => $code,
            'message'   => $code_message,
            'data'      => $message

    // return an error
    return Response::json($data, $code);