Класс 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

Возвращаемое значение

Значение статуса ответа.