Ответ сервера

[
    'errors' => [
        [
            'status' => '400 Bad Request',
            'code'   => 'danger',
            'title'  => 'Текст ошибки',
            'meta'   => [
                'myfield' => 'field value',
            ],
        ],
    ],
    'data'   => [],
]

* Настоятельно рекомендуется пользоваться быстрыми фасадами (см. внизу)

Массив errors

Содержит набор элементов всех ошибок. Каждая ошибка состоит из следующих элементов:

  • status (строка, обязательно): код состояния HTTP;
  • code (строка, обязательно): код ошибки, специфичный для приложения:
    • danger: Критическая ошибка;
    • warning: Обратите внимание (не критическая ошибка);
    • info: Информационное сообщение.
  • title (строка, обязательно): краткое, понятное для человека описание проблемы;
  • meta (массив, необязательно): массив дополнительных данных об ошибке для приложения.

403 Forbidden

При таком ответе можно также передать параметр redirect в meta, принимает значение true\false

Если параметр не передан, или значение установлено true, тогда при получении такой ошибки клиент направит пользователя на страницу /403

При значении false клиент покажет ошибку и не будет выполнять переход

[
    'errors' => [
        [
            'status' => '403 Forbidden',
            'code'   => 'warning',
            'title'  => 'Доступ ограничен',
            'meta'   => [
                'redirect' => true,
            ],
        ],
    ],
]

Часто используемые статусы

  • 303 See Other - «редирект»
  • 400 Bad Request - «плохой, неверный запрос»
  • 401 Unauthorized - «не авторизован (не представился)»
  • 403 Forbidden - «запрещено (не уполномочен)»
  • 404 Not Found - «не найдено»
  • 500 Internal Server Error - «внутренняя ошибка сервера»
  • Полный список

* Если есть массив errors, тогда не может быть массива data

Массив data

Содержит набор элементов ответа.

* Если есть массив data, тогда не может быть массива errors

Быстрые фасады

Для быстрой генерации ответа используйте фасады:

use Lemurro\Api\Core\Helpers\Response;

// Для успешного выполнения
return Response::data($array_data);

// Часто используемые ошибки
return Response::error400($title, $meta);
return Response::error401($title, $meta);
return Response::error403($title, $redirect, $meta);
return Response::error404($title, $meta);
return Response::error500($title, $meta);

// Для указания особенной ошибки
return Response::error($status, $code, $title, $meta);

// Для нескольких ошибок
$errors = [
    Response::error400($title, $meta),
    Response::error404($title, $meta),
];
return Response::errors($errors);

// Для нескольких ошибок
$errors = [
    [$status, $code, $title, $meta],
    [$status, $code, $title],
];
return Response::errors($errors);

// Для обработки Exception
// Если код не передан, не совпадает с быстрыми фасадами или отсутствует: тогда ошибка будет 500
try {
    throw new Exception('Ошибка в запросе', 400);
} catch (Exception $e) {
    // Вернёт ошибку как если бы вы использовали return Response::error400('Ошибка в запросе');
    return Response::exception($e);
}