К содержанию
Meduza
Документация

HTTP-ответы

App\Http\Response используется для формирования HTTP-ответов на основе объектов App\Http\Response\Result и App\Http\Response\Error.

Инициализация класса

Создайте объект Response и передайте в него один из типов ответа.

use App\Http\Response;

$successResponse = new Response(
    new Response\Result(['success' => true], 200)
);

$errorResponse = new Response(
    new Response\Error('Unknown error', 500)
);

Установка заголовков ответа

Метод $response->setHeaders($headers) устанавливает набор заголовков целиком:

Код:

$successResponse->setHeaders([
    'Content-Type' => 'application/json; charset=UTF-8',
    'Cache-Control' => 'no-cache',
]);

Метод $response->addHeader($key, $value) добавляет один заголовок:

Код:

$successResponse->addHeader('Cache-Control', 'no-cache');

Проверка типа ответа

Чтобы определить тип ответа, используйте методы $response->hasResult() и $response->hasError().

Код/Результат:

$successHasResult = $successResponse->hasResult();
$errorHasError = $errorResponse->hasError();

echo sprintf(
    "successResponse has result: %s\nerrorResponse has error: %s",
    $successHasResult ? 'yes' : 'no',
    $errorHasError ? 'yes' : 'no'
);
successResponse has result: yes
errorResponse has error: yes

Получение тела ответа

Метод $response->get() возвращает тело ответа в виде массива.

Код/Результат:

$successBody = $successResponse->get();
$errorBody = $errorResponse->get();

print_r($successBody);
echo PHP_EOL;
print_r($errorBody);
Array
(
  [result] => Array
    (
      [success] => 1
    )
)

Array
(
  [error] => Array
    (
      [code] => 500
      [message] => Unknown error
    )
)

Получение тела ответа в формате JSON

Метод $response->getJson() возвращает тело ответа в JSON-формате.

Код/Результат:

$successJson = $successResponse->getJson();
$errorJson = $errorResponse->getJson();

echo $successJson;
echo PHP_EOL;
echo $errorJson;
{"result":{"success":true}}
{"error":{"code":500,"message":"Unknown error"}}

Тип ответа Result

App\Http\Response\Result формирует успешное тело ответа с ключом result.

Аргументы конструктора

  • array data - обязательный массив с данными ответа;
  • int code - HTTP-код ответа, по умолчанию 200;
  • bool keysToLower - признак преобразования ключей к нижнему регистру, по умолчанию false.

Методы класса

  • get() - возвращает тело ответа в ключе result;
  • getCode() - возвращает HTTP-код ответа.

Код/Результат:

$result = new App\Http\Response\Result(['success' => true], 200);

echo $result->getCode();
echo PHP_EOL . PHP_EOL;
echo print_r($result->get(), true);
200

Array
(
  [result] => Array
    (
      [success] => 1
    )
)

Тип ответа Error

App\Http\Response\Error формирует тело ответа с ключом error.

Аргументы конструктора

  • string message - текст ошибки, по умолчанию Internal server error;
  • int code - HTTP-код ответа, по умолчанию 500;
  • array data - необязательный массив дополнительных данных, который будет объединён с ключами code и message;
  • bool keysToLower - признак преобразования ключей к нижнему регистру, по умолчанию false.

Методы класса

  • get() - возвращает тело ответа в ключе error;
  • getCode() - возвращает HTTP-код ответа.

Код/Результат:

$error = new App\Http\Response\Error('Unknown error', 500, ['status' => false]);

echo $error->getCode();
echo PHP_EOL . PHP_EOL;
echo print_r($error->get(), true);
500

Array
(
  [error] => Array
    (
      [status] => 
      [code] => 500
      [message] => Unknown error
    )
)