HTTP-запрос
Request передаётся вторым аргументом onMessage HTTP-сервера. Это объект сообщения с ленивым разбором; он не является PSR-7 ServerRequest. Для рабочего сервера используйте проверяемый пример.
Входные данные
Заголовок раздела «Входные данные»| Метод | Поведение |
|---|---|
get($name = null, $default = null) | Query-параметр или весь массив; разбор через parse_str |
post($name = null, $default = null) | Form-urlencoded, JSON-массив/объект или поля multipart; неизвестный тип даёт пустой массив |
input($name, $default = null) | GET имеет приоритет над POST |
all(), only($keys), except($keys) | Объединение GET + POST; одинаковое имя берётся из GET |
json($name = null, $default = null) | JSON либо поле; ошибка разбора возвращает null, а не HTTP 400 |
setGet($data), setPost($data) | Изменение разобранных данных запроса |
Для обязательного JSON валидируйте rawBody() через json_decode(..., flags: JSON_THROW_ON_ERROR) и отдельно проверяйте схему. Корректный JSON null и ошибка при вызове json() неразличимы. Удаление NUL из form/query не заменяет валидацию, SQL-параметры или контекстное экранирование HTML.
Адрес, заголовки и содержимое
Заголовок раздела «Адрес, заголовки и содержимое»method()/isMethod(), protocolVersion(), uri(), path(), queryString() описывают строку запроса. url() и fullUrl() возвращают //host/path, без схемы; второй включает query. host(true) убирает порт. Не используйте произвольный Host для доверенных redirect/callback URL.
header() читает имя без учёта регистра; без имени возвращает карту с нижним регистром ключей. Повторяющиеся заголовки объединяются запятой. setHeaders() задаёт карту; trailer() читает нормализованные chunk trailers. cookie() декодирует cookie. rawHead(), rawBody(), rawBuffer() возвращают исходные части сообщения.
isAjax(), isPjax(), isJson(), isHTML(), acceptJson()/acceptsJson(), expectsJson(), acceptsAnyContentType() и parseAcceptHeader() помогают выбрать представление. Это подсказки клиента, не механизм авторизации.
Соединение и reverse proxy
Заголовок раздела «Соединение и reverse proxy»getConnection() требует присоединённого соединения и иначе выбрасывает исключение. getLocalIp/Port() и getRemoteIp/Port() описывают транспорт. getRequestIp() и isSecure() учитывают forwarding headers только от Request::$trustedProxies (IP/CIDR; wildcard доверяет всем). Настройте доверие только на реальные прокси и очистку заголовков на границе; не используйте wildcard для доступного извне сервера.
Загрузки и срок жизни
Заголовок раздела «Загрузки и срок жизни»file($name = null) возвращает массивы с name, tmp_name, size, error, type, а не объект UploadedFile. Multipart использует временные файлы и Request::$maxFileUploads. MIME от клиента недостоверен; проверяйте размер, содержимое, разрешённые расширения и целевой путь. Переместите нужный файл до уничтожения Request: destroy() удаляет оставшиеся временные файлы. Не храните Request в глобальном состоянии worker.
Сессии описаны отдельно. Индекс деклараций содержит сигнатуры, но не заменяет поведение протокольного декодера.