Класс Request - lmovsesjan/Fastcgi-Daemon GitHub Wiki
Определяет методы обработки запроса. Разбор и модификация заголовка и тела запроса, подготовка ответа на запрос. Определен в заголовочном файле fastcgi2/request.h
. Описание упоминаемых ниже CGI переменных окружения можно найти в спецификации протокола.
Методы класса:
Метод | Описание |
---|---|
getServerPort | Возвращает номер порта, на который пришел запрос. Переменная окружения SERVER_PORT . |
getHost | Возвращает значение HTTP-заголовка Host . |
getServerAddr | Возвращает ip-адрес HTTP-сервера, на который пришел пользовательский запрос. Переменная окружения SERVER_ADDR . |
getPathInfo | Возвращает добавочную часть адреса. Переменная окружения PATH_INFO . |
getPathTranslated | Возвращает PATH_INFO , добавленный к DOCUMENT_ROOT . Переменная окружения PATH_TRANSLATED . |
getScriptName | Возвращает путь к скрипту. Например, /requested_resource/ . Переменная окружения SCRIPT_NAME . |
getScriptFilename | Возвращает имя файла скрипта. Переменная окружения SCRIPT_FILENAME . |
getDocumentRoot | Возвращает путь к корню сайта, к которому обратился пользователь. Например, /etc/nginx/html . Переменная окружения DOCUMENT_ROOT . |
getRemoteUser | Возвращает идентификационную строку пользователя. Переменная окружения REMOTE_USER . |
getRemoteAddr | Возвращает IP-адрес, с которого пришел запрос. Переменная окружения REMOTE_ADDR |
getQueryString | Возвращает строку с перечнем параметров запроса. Например, arg1=1&arg2=arg2 . Переменная окружения QUERY_STRING . |
getRequestMethod | Возвращает имя HTTP-метода запроса. Переменная окружения REQUEST_METHOD . |
getContentLength | Возвращает размер тела запроса. |
getContentType | Возвращает содержимое заголовка Content-Type . |
getURI | Возвращает ресурс с параметрами. Например, /requested_resource/?arg1=1&arg2=arg2 . |
getUrl | Возвращает URL. Например, http://localhost/requested_resource/?arg1=1&arg2=arg2 . |
countArgs | Возвращает количество параметров запроса. |
hasArg | Проверяет наличие параметра с заданным именем. |
getArg | Возвращает значение параметра. |
argNames | Возвращает имена всех переданных параметров. |
coutHeaders | Возвращает количество заголовков в шапке запроса. |
hasHeader | Проверяет наличие конкретного заголовка. |
getHeader | Возвращает значение заголовка. |
headerNames | Возвращает перечень заголовков. |
countCookie | Возвращает количество кук в запросе. |
hasCookie | Проверяет наличие куки с указанным именем. |
getCookie | Возвращает значение куки. |
cookieNames | Возвращает перечень имен кук. |
hasFile | Проверяет наличие файловой сущности с заданным именем. |
remoteFiles | Возвращает список имен файловых сущностей запроса. |
remoteFileName | Возвращает имя файла заданной файловой сущности. |
remoteFileType | Возвращает тип (Content-Type) файла. |
remoteFile | Возвращает объект класса DataBuffer, который содержит переданный файл. |
isSecure | Проверяет протокол обмена (HTTP или HTTPS). |
requestBody | Возвращает объект класса DataBuffer, содержащий тело запроса. |
setCookie | Устанавливает значение заголовка Set-Cookie. |
setStatus | Устанавливает статус ответа. |
sendError | Устанавливает статус ответа и отправляет клиенту описание ошибки в виде HTML-страницы. |
setHeader | Устанавливает значение заданного заголовка. |
write | Записывает в тело ответа переданный поток или строку. |
outputHeader | Возвращает значение исходящего заголовка |
reset | Устанавливает HTTP-статус в 200 и удаляет все данные запроса: аргументы, переменные, файлы, заголовки и пр. |
attach | Добавляет к телу запроса новый сегмент. |
isProcessed | Возвращает признак завершения обработки запроса. Признак устанавливается методом markAsProcessed. |
markAsProcessed | Устанавливает признак завершения обработки запроса. |
redirectBack | Перенаправляет запрос по адресу, указанному в заголовке Referer . |
redirectToPath | Перенаправляет запрос по указанному адресу. |
setContentType | Устанавливает значение заголовка Content-Type. |
setContentEncoding | Устанавливает значение заголовка Content-Encoding. |
parse | Разбирает переданный буфер как запрос. |
serialize | Преобразование запроса в буфер. |
status | Возвращает значение статуса. |
Метод getServerPort
Возвращает номер порта, на который пришел запрос. Переменная окружения SERVER_PORT
.
unsigned short getServerPort() const
Возвращаемое значение
Номер порта.
Метод getHost
Возвращает значение HTTP-заголовка Host
.
const std::string& getHost() const
Возвращаемое значение Доменное имя или ip-адрес хоста.
Метод getServerAddr
Возвращает ip-адрес HTTP-сервера, на который пришел пользовательский запрос. Переменная окружения SERVER_ADDR
.
const std::string& getServerAddr() const
Возвращаемое значение
Ip-адрес в строковом представлении.
Метод getPathInfo
Возвращает добавочную часть адреса. Переменная окружения PATH_INFO
.
const std::string& getPathInfo() const
Возвращаемое значение
Значение переменной окружения PATH_INFO
.
Метод getPathTranslated
Возвращает PATH_INFO
, добавленный к DOCUMENT_ROOT
. Переменная окружения PATH_TRANSLATED
.
const std::string& getPathTranslated() const
Возвращаемое значение
Значение переменной окружения PATH_TRANSLATED
.
Метод getScriptName
Возвращает путь к скрипту. Например, /requested_resource/
. Переменная окружения SCRIPT_NAME
.
const std::string& getScriptName() const
Возвращаемое значение
Значение переменной окружения SCRIPT_NAME
.
Метод getScriptFilename
Возвращает имя файла скрипта. Переменная окружения SCRIPT_FILENAME
.
const std::string& getScriptFilename() const
Возвращаемое значение
Значение переменной окружения SCRIPT_FILENAME
.
Метод getDocumentRoot
Возвращает путь к корню сайта, к которому обратился пользователь. Например, /etc/nginx/html
. Переменная окружения DOCUMENT_ROOT
.
const std::string& getDocumentRoot() const
Возвращаемое значение
Значение переменной окружения DOCUMENT_ROOT
.
Метод getRemoteUser
Возвращает идентификационную строку пользователя. Переменная окружения REMOTE_USER
.
const std::string& getRemoteUser() const
Возвращаемое значение
Значение переменной окружения REMOTE_USER
.
Метод getRemoteAddr
Возвращает IP-адрес, с которого пришел запрос. Переменная окружения REMOTE_ADDR
.
const std::string& getRemoteAddr() const
Возвращаемое значение
Значение переменной окружения REMOTE_ADDR
.
Метод getQueryString
Возвращает строку с перечнем параметров запроса. Например, arg1=1&arg2=arg2
. Переменная окружения QUERY_STRING
.
const std::string& getQueryString() const
Возвращаемое значение
Значение переменной окружения QUERY_STRING
.
Метод getRequestMethod
Возвращает имя HTTP-метода запроса, например, GET, PUT, DELETE и пр. Переменная окружения REQUEST_METHOD
.
const std::string& getRequestMethod() const
Возвращаемое значение
Значение переменной окружения REQUEST_METHOD
.
Метод getContentLength
Возвращает размер тела запроса.
std::streamsize getContentLength() const
Возвращаемое значение
Длина контента.
Метод getContentType
Возвращает содержимое заголовка Content-Type
.
const std::string& getContentType() const
Возвращаемое значение
Тип контента.
Метод getURI
Возвращает ресурс с параметрами.
std::string getURI() const
Возвращаемое значение
Идентификатор ресурса. Например, /requested_resource/?arg1=1&arg2=arg2
.
Метод getUrl
Возвращает URL.
std::string getUrl() const
Возвращаемое значение
Адрес ресурса. Например, http://localhost/requested_resource/?arg1=1&arg2=arg2
.
Метод countArgs
Возвращает количество параметров запроса.
unsigned int countArgs() const
Возвращаемое значение
Количество параметров. Если какой-либо из параметров встречается несколько раз, то каждое его значение расценивается при подсчете как отдельное. Например, в случае arg1=1&arg2=arg2,arg1=2
функция вернёт 3.
Метод hasArg
Проверяет наличие параметра с заданным именем.
bool hasArg(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | название параметра. Например arg1 . |
Возвращаемое значение
true
, если параметр существует и false
в противном случае.
Метод getArg
Возвращает значение параметра.
const std::string& getArg(const std::string &name) const
void getArg(const std::string &name, std::vector<std::string> &v) const
Входные параметры
Параметр | Описание |
---|---|
name | Название параметра. Например arg1 . |
v | Выходной параметр. Вектор, который будет заполнен значениями агрумента, если их несколько. |
Возвращаемое значение
Значение параметра.
При вызове функции без вектора она вернёт значение первого встретившегося параметра с заданным именем. В случае вызова с вектором функция вернёт все значения параметра с заданным именем.
Метод argNames
Возвращает имена переданных параметров.
void argNames(std::vector<std::string> &v)
Входные параметры
Параметр | Описание |
---|---|
v | Выходной параметр. Вектор, который будет заполнен именами параметров. Имя выдается единожды, даже если параметр встречается несколько раз. |
Метод coutHeaders
Возвращает количество заголовков в шапке запроса.
unsigned int countHeaders() const
Возвращаемое значение
Количество заголовков.
Метод hasHeader
Проверяет наличие конкретного заголовка.
bool hasHeader(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Название заголовка. Например Content-Type . |
Возвращаемое значение
true
, если заголовок существует и false
в противном случае.
Метод getHeader
Возвращает значение заголовка.
const std::string& getHeader(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Название заголовка. Например Content-Type . |
Возвращаемое значение
Значение заголовка.
Метод headerNames
Возвращает перечень заголовков.
void headerNames(std::vector<std::string> &v) const
Входные параметры
Параметр | Описание |
---|---|
v | Выходной параметр. Вектор, который будет заполнен именами заголовков. Имя выдается единожды, даже если заголовок встречается несколько раз. |
Метод countCookie
Возвращает количество кук в запросе.
unsigned int countCookie() const
Возвращаемое значение
Количество кук.
Метод hasCookie
Проверяет наличие куки.
bool hasCookie(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Название куки. |
Возвращаемое значение
true
, если кука существует и false
в противном случае.
Метод getCookie
Возвращает значение куки.
const std::string& getCookie(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Название куки. |
Возвращаемое значение
Значение куки.
Метод cookieNames
Возвращает перечень имен кук.
void cookieNames(std::vector<std::string> &v) const
Входные параметры
Параметр | Описание |
---|---|
v | Выходной параметр. Вектор, который будет заполнен именами кук. |
Метод hasFile
Проверяет наличие файловой сущности.
bool hasFile(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Название сущности. |
Возвращаемое значение
true
, если файл существует и false
в противном случае.
Метод remoteFiles
Возвращает список имен файловых сущностей запроса.
void remoteFiles(std::vector<std::string> &v) const
Входные параметры
Параметр | Описание |
---|---|
v | Выходной параметр. Вектор, который будет заполнен именами файловых сущностей запроса. |
Метод remoteFileName
Возвращает имя файла заданной файловой сущности.
const std::string& remoteFileName(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Имя файловой сущности. Например file1 . |
Возвращаемое значение
Имя файла. Например, draft.gif
.
Метод remoteFileType
Возвращает тип (Content-Type) файла.
const std::string& remoteFileType(const std::string &name) const;
Входные параметры
Параметр | Описание |
---|---|
name | Имя файловой сущности. Например file1 . |
Возвращаемое значение
Тип файла.
Метод remoteFile
Возвращает объект класса DataBuffer, который содержит переданный файл.
DataBuffer remoteFile(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Имя файловой сущности. Например file1 . |
Возвращаемое значение
Объект класса DataBuffer, содержащий данные указанного файла.
Метод isSecure
Проверяет протокол обмена HTTP или HTTPS.
bool isSecure() const
Возвращаемое значение
Если используется HTTPS, то - true
. В противном случае - false
.
Метод requestBody
Возвращает объект класса DataBuffer, содержащий тело запроса.
DataBuffer requestBody() const
Возвращаемое значение Объект класса DataBuffer, содержащий тело запроса.
Метод setCookie
Устанавливает значение заголовка Set-Cookie ответа на запрос.
void setCookie(const Cookie &cookie)
Входные параметры
Параметр | Описание |
---|---|
cookie | Объект класса Cookie. |
Метод setStatus
Устанавливает статус ответа.
void setStatus(unsigned short status)
Входные параметры
Параметр | Описание |
---|---|
status | HTTP-cтатус ответа на запрос. |
Метод sendError
Устанавливает статус ответа и отправляет клиенту описание ошибки в виде HTML-страницы.
void sendError(unsigned short status)
Входные параметры
Параметр | Описание |
---|---|
status | HTTP-cтатус ответа на запрос. |
Метод setHeader
Устанавливает значение заданного заголовка в ответе на запрос.
void setHeader(const std::string &name, const std::string &value)
Входные параметры
Параметр | Описание |
---|---|
name | Имя заголовка. |
value | Значение заголовка. |
Метод write
Записывает в тело ответа переданный поток или строку.
void write(std::streambuf *buf)
std::streamsize write(const char *buf, std::streamsize size)
Входные параметры
Параметр | Описание |
---|---|
buf | Данные. |
size | Размер данных. |
Возвращаемое значение
Размер записанных данных.
Метод outputHeader
Возвращает значение заголовка ответа на запрос.
std::string outputHeader(const std::string &name) const
Входные параметры
Параметр | Описание |
---|---|
name | Имя заголовка. |
Возвращаемое значение
Значение заголовка ответа на запрос.
Метод reset
Обнуляет запрос и все связанные с ним величины.
void reset()
Метод attach
Добавляет к телу запроса новый сегмент.
void attach(RequestIOStream *stream, char *env[])
Входные параметры
Параметр | Описание |
---|---|
stream | Указатель на объект класса RequestIOStream, содержащий данные для прикрепления. |
env | Текущее окружение. |
Метод isProcessed
Возвращает признак завершения обработки запроса. Признак устанавливается методом markAsProcessed.
bool isProcessed() const
Возвращаемое значение
Признак завершения обработки запроса.
Метод markAsProcessed
Устанавливает признак завершения обработки запроса.
void markAsProcessed()
Метод redirectBack
Перенаправляет запрос по адресу, указанному в заголовке Referer
. Статус ответа - 302.
void redirectBack()
Метод redirectToPath
Перенаправляет запрос по указанному адресу. Статус ответа - 302.
void redirectToPath(const std::string &path)
Входные параметры
Параметр | Описание |
---|---|
path | Адрес перенаправления. |
Метод setContentType
Устанавливает значение заголовка Content-Type ответа на запрос.
void setContentType(const std::string &type)
Входные параметры
Параметр | Описание |
---|---|
type | Тип данных. |
Метод setContentEncoding
Устанавливает значение заголовка Content-Encoding ответа на запрос.
void setContentEncoding(const std::string &encoding)
Входные параметры
Параметр | Описание |
---|---|
encoding | Кодировка. |
Метод parse
Разбирает переданный буфер как запрос и размещает его элементы во внутренних структурах класса Request.
void parse(DataBuffer buffer)
Входные параметры
Параметр | Описание |
---|---|
buffer | Объект класса DataBuffer, который содержит в себе полный HTTP-запрос. |
Метод serialize
Преобразование запроса в буфер.
void serialize(DataBuffer &buffer)
Входные параметры
Параметр | Описание |
---|---|
buffer | Выходной параметр. В этот объект будет размещен подготовленный HTTP-запрос. |
Метод status
Возвращает значение статуса ответа.
unsigned short status() const
Возвращаемое значение
Значение статуса ответа.