HTTP-сообщения
Класс Message предоставляет интерфейс к частям HTTP-сообщения, общим для запросов и ответов, включая тело сообщения, версию протокола, утилиты для работы с заголовками и методы для обработки переговорного процесса о формате содержимого.
Этот класс является родительским классом, от которого наследуются как класс Запрос, так и класс Ответ. В связи с этим некоторые методы, такие как методы переговорного процесса о формате содержимого, могут применяться только к запросу или ответу, а не к другому, но они включены сюда для объединения методов работы с заголовками.
Что такое переговорный процесс о формате содержимого?
В основе переговорного процесса о формате содержимого лежит часть спецификации HTTP, которая позволяет одному ресурсу предоставлять более одного типа содержимого, позволяя клиентам запрашивать тип данных, который лучше всего подходит для них.
Классическим примером этого является браузер, который не может отображать файлы PNG, может запросить только GIF или JPEG изображения. Когда getServer получает запрос, он проверяет доступные типы файлов, запрошенные клиентом, и выбирает наилучшее соответствие из поддерживаемых форматов изображений, в данном случае, вероятно, выберет JPEG-изображение для возврата.
Такой же переговорный процесс может происходить с четырьмя типами данных:
- Тип носителя/документа - это может быть формат изображения или HTML против XML или JSON.
- Кодировка символов - кодировка символов, в которой должен быть представлен возвращаемый документ. Обычно это UTF-8.
- Кодирование документа - обычно тип сжатия, используемый для результатов.
- Язык документа - для сайтов, поддерживающих несколько языков, это помогает определить, какой из них вернуть.
Справочник по классам
-
CodeIgniter\HTTP\Message -
-
getBody() -
Возвращает: Текущее тело сообщения Тип возвращаемого значения: смешанный Возвращает текущее тело сообщения, если оно задано. Если тело не существует, возвращает null:
echo $message->getBody();
-
setBody($data) -
Параметры: - $data (смешанный) – Тело сообщения.
Возвращает: экземпляр Message|Response для возможности цепочки методов.
Тип возвращаемого значения: CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
Устанавливает тело текущего запроса.
-
appendBody($data) -
Параметры: - $data (смешанный) – Тело сообщения.
Возвращает: экземпляр Message|Response для возможности цепочки методов.
Тип возвращаемого значения: CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
Добавляет данные к телу текущего запроса.
-
populateHeaders() -
Возвращает: void Сканирует и парсит заголовки, найденные в данных SERVER, и сохраняет их для последующего доступа. Это используется классом IncomingRequest для предоставления заголовков текущего запроса.
Заголовки — это любые данные SERVER, начинающиеся с
HTTP_, например,HTTP_HOST. Каждое сообщение преобразуется из стандартного формата с заглавными буквами и нижним подчёркиванием в формат ucwords и дефис. ПредшествующийHTTP_удаляется из строки. Например,HTTP_ACCEPT_LANGUAGEстановитсяAccept-Language.
-
headers() -
Возвращает: Массив всех найденных заголовков. Тип возвращаемого значения: array Возвращает массив всех найденных или ранее установленных заголовков.
-
header($name) -
Параметры: - $name (строка) – Имя заголовка, значение которого нужно получить.
Возвращает: Возвращает объект одного заголовка. Если существует несколько заголовков с одинаковым именем, возвращает массив объектов заголовков.
Тип возвращаемого значения: CodeIgniter\HTTP\Header|array
Позволяет получить текущее значение одного заголовка сообщения.
$name— имя заголовка, не чувствительное к регистру. Хотя заголовок преобразуется внутренне, как описано выше, вы можете получить доступ к заголовку с любым регистром:// These are all the same: $message->header('HOST'); $message->header('Host'); $message->header('host');Если заголовок имеет несколько значений,
getValue()вернётся в виде массива значений. Вы можете использовать методgetValueLine()для получения значений в виде строки:echo $message->header('Accept-Language'); // Outputs something like: 'Accept-Language: en,en-US' echo $message->header('Accept-Language')->getValue(); // Outputs something like: [ 'en', 'en-US' ] echo $message->header('Accept-Language')->getValueLine(); // Outputs something like: 'en,en-US'Вы можете отфильтровать заголовок, передав значение фильтра как второй параметр:
$message->header('Document-URI', FILTER_SANITIZE_URL);
-
hasHeader($name) -
Параметры: - $name (строка) – Имя заголовка, существование которого нужно проверить.
Возвращает: Возвращает true, если заголовок существует, иначе false.
Тип возвращаемого значения: bool
-
getHeaderLine($name) -
Параметры: - $name (строка) – Имя заголовка для извлечения.
Возвращает: Строка, представляющая значение заголовка.
Тип возвращаемого значения: строка
Возвращает значение(я) заголовка в виде строки. Этот метод позволяет легко получить строковое представление значений заголовка, когда заголовок имеет несколько значений. Значения объединяются соответствующим образом:
echo $message->getHeaderLine('Accept-Language'); // Outputs: en, en-US
-
setHeader($name, $value) -
Параметры: - $name (строка) – Имя заголовка для установки значения.
- $value (смешанный) – Значение для установки заголовка.
Возвращает: Текущий экземпляр Message|Response
Тип возвращаемого значения: CodeIgniter\HTTP\Message|CodeIgniter\HTTP\Response
Устанавливает значение одного заголовка.
$name— имя заголовка, не чувствительное к регистру. Если заголовок ещё не существует в коллекции, он будет создан.$valueможет быть строкой или массивом строк:$message->setHeader('Host', 'codeigniter.com');
-
removeHeader($name) -
Параметры: - $name (строка) – Имя заголовка для удаления.
Возвращает: Текущий экземпляр сообщения
Тип возвращаемого значения: CodeIgniter\HTTP\Message
Удаляет заголовок из сообщения.
$name— имя заголовка, не чувствительное к регистру:$message->removeHeader('Host');
-
appendHeader($name, $value) -
Параметры: - $name (строка) – Имя заголовка для изменения
- $value (строка) – Значение, которое нужно добавить к заголовку.
Возвращает: Текущий экземпляр сообщения
Тип возвращаемого значения: CodeIgniter\HTTP\Message
Добавляет значение к существующему заголовку. Заголовок должен быть массивом значений, а не одной строкой. Если это строка, будет брошено исключение LogicException.
$message->appendHeader('Accept-Language', 'en-US; q=0.8');
-
prependHeader($name, $value) -
Параметры: - $name (строка) – Имя заголовка для изменения
- $value (строка) – Значение, которое нужно добавить в начало заголовка.
Возвращает: Текущий экземпляр сообщения
Тип возвращаемого значения: CodeIgniter\HTTP\Message
Добавляет значение в начало существующего заголовка. Заголовок должен быть массивом значений, а не одной строкой. Если это строка, будет брошено исключение LogicException.
$message->prependHeader('Accept-Language', 'en,');
-
getProtocolVersion() -
Возвращает: Текущая версия HTTP-протокола Тип возвращаемого значения: строка Возвращает текущую версию HTTP-протокола сообщения. Если не задано, вернёт
null. Допустимые значения:1.0,1.1и2.0.
-
setProtocolVersion($version) -
Параметры: - $version (строка) – Версия HTTP-протокола
Возвращает: Текущий экземпляр сообщения
Тип возвращаемого значения: CodeIgniter\HTTP\Message
Устанавливает версию HTTP-протокола, используемого этим сообщением. Допустимые значения:
1.0,1.1и2.0:$message->setProtocolVersion('1.1');
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/incoming/message.html