Заголовки HTTP-запроса
Работа с HTTP-заголовками в Imhotep проста и интуитивно понятна. Заголовки содержат важную метаинформацию о запросе: тип контента, браузер пользователя, IP-адрес и многое другое.
Получение заголовков
Получить все заголовки
// Возвращает ассоциативный массив всех заголовков
$headers = $request->headers();
$headers = $request->headers->all(); // Тоже самое
PHP
Получить конкретный заголовок
$value = $request->headers('X-Header-Name');
$value = $request->header('X-Header-Name'); // Альтернативный вариант
$value = $request->headers->get('X-Header-Name'); // Альтернативный вариант
PHP
Значение по умолчанию
Если заголовок отсутствует, можно вернуть значение по умолчанию:
// Строка по умолчанию
$value = $request->header('X-Header-Name', 'default-value');
// Callback для значения по умолчанию
$value = $request->header('X-Header-Name', function () {
return 'computed-default';
});
PHP
Проверка наличия заголовка
// Проверить один заголовк
if ($request->hasHeader('X-Header-Name')) {
// Заголовок присутствует
}
// Альтернативный способ: $request->headers->has('X-Header-Name')
// Проверить несколько заголовков
if ($request->hasHeaders(['X-Header-1', 'X-Header-2'])) {
// Все указанные заголовки присутствуют
}
// Альтернативный способ: $request->headers->hasMany(['X-Header-1', 'X-Header-2'])
PHP
Распространённые заголовки
Imhotep предоставляет удобные методы для работы с часто используемыми заголовками:
IP-адрес пользователя
$ip = $request->ip();
// Пример: '192.168.1.1'
PHP
User-Agent
$userAgent = $request->userAgent();
// Пример: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...'
PHP
Тип запроса
// Ajax запрос
if ($request->ajax()) {
// Это Ajax-запрос
}
// PJAX запрос (частичная загрузка страницы)
if ($request->pajax()) {
// Это PJAX-запрос
}
// Предварительная загрузка (prefetch)
if ($request->prefetch()) {
// Браузер предзагружает страницу
}
PHP
HTTP Basic Auth
$user = $request->getUser(); // Логин
$password = $request->getPassword(); // Пароль
PHP
Bearer-токен авторизации
Для API, использующих Bearer-токены в заголовке Authorization:
$token = $request->bearerToken();
// Из заголовка: Authorization: Bearer your_token_here
// Вернёт: 'your_token_here'
PHP
Согласование контента
Получить поддерживаемые типы контента
$contentTypes = $request->getAcceptableTypes();
// ['text/html', 'application/json', 'application/xml']
PHP
Проверить поддержку типа
// Один тип
if ($request->accepts('text/html')) {
// Клиент принимает HTML
}
// Несколько типов
if ($request->accepts('text/html', 'application/json')) {
// Клиент принимает HTML или JSON
}
PHP
Быстрые проверки для популярных форматов
// JSON
if ($request->acceptsJson()) {
// Клиент принимает JSON
}
if ($request->wantsJson()) {
// Клиент ожидает JSON
}
if ($request->expectsJson()) {
// Вероятно, это API-запрос, ожидающий JSON
}
// HTML
if ($request->acceptsHtml()) {
// Клиент принимает HTML
}
PHP
Определение формата ответа
$format = $request->format();
// Возвращает: 'html', 'json', 'xml' и т.д.
PHP
Языковые предпочтения
// Получить список предпочитаемых языков
$languages = $request->getAcceptedLanguages();
// ['en_us', 'ru_ru', 'de_de']
// Проверить поддержку языка
if ($request->acceptLanguage('ru_ru')) {
// Клиент принимает русский язык
}
PHP