Интерфейс API позволяет расширить основные функции сервера proxy. Написание модулей (создаваемых пользователем расширений приложений) дает возможность выполнять дополнительные операции, например:
Основной процесс обработки запросов на сервере можно разбить на отдельные этапы в зависимости от типа обработки, выполняемой сервером на каждой стадии. Каждый этап содержит фазу, когда может выполняться заданная часть программы. Путем добавления директив API в файл конфигурации вы указываете, какие функции приложений должен вызывать сервер на том или ином этапе. На этапе обработки запроса вы можете вызвать несколько функций приложений, добавив несколько директив API для этого этапа.
Программа, создаваемая в результате компиляции модуля, хранится в файле с расширением .DLL, .so или .o, в зависимости от операционной системы. Когда сервер поэтапно выполняет запрос, на каждом этапе он вызывает соответствующие функции приложений модуля до тех пор, пока какая-либо из функций не сообщит о том, что она обработала запрос. Если на данном этапе необходимо вызвать несколько функций модуля, то они вызываются в том порядке, в котором они указаны в файле конфигурации.
Если запрос не удалось выполнить с помощью функции приложения (функция приложения не указана, либо она возвратила код HTTP_NOACTION), сервер выполняет действие по умолчанию на этом этапе. Примечание: сказанное справедливо для всех этапов, кроме этапа Service, на котором действие по умолчанию не предусмотрено.
Для каждого этапа процесса обработки запросов существует директива конфигурации, позволяющая задать пользовательскую функцию приложения, которую нужно вызывать и выполнять на этом этапе.
Если на одном этапе обработки вызываются несколько функций модуля, то иногда важен относительный порядок соответствующих директив. Функции, предназначенные для данного этапа, выполняются в том порядке, в котором они указаны.
Директивы NameTrans и Service аналогичны директиве Exec и зависят от того, в каком месте файла конфигурации, относительно других директив отображения, она находится. Это означает, что сервер обрабатывает директивы Service, NameTrans, Map, Pass, Exec, Redirect и Fail в том порядке, в котором они указаны в файле конфигурации. После успешного отображения URL в файл сервер прекращает чтение и обработку последующих директив для этого запроса.
Примечание: директивы NameTrans и Service, так же как и директивы Map, Pass, Exec, Redirect и Fail, можно настроить с помощью формы Маршрутизация запросов. Первоначально в этой форме содержатся значения по умолчанию, отображаемые в соответствующем порядке для этих директив.
ServerInit | /путь/файл:имя_функции | ||
PreExit | /путь/файл:имя_функции | ||
Authentication | тип | /путь/файл:имя_функции | |
NameTrans | /URL | /путь/файл:имя_функции | |
Authorization | /URL | /путь/файл:имя_функции | |
ObjectType | /URL | /путь/файл:имя_функции | |
PostAuth | /путь/файл:имя_функции | ||
Service | /URL | /путь/файл:имя_функции | |
Transmogrifier | /путь/файл:имя_функции_открытия:имя_функции_записи:имя_функции_закрытия:имя_функции_ошибки | ||
Log | /URL | /путь/файл:имя_функции | |
Error | /URL | /путь/файл:имя_функции | |
PostExit | /путь/файл:имя_функции | ||
ServerTerm | /путь/файл:имя_функции | ||
Midnight | /путь/файл:имя_функции | ||
PICSDBLookup | /путь/файл:имя_функции | ||
GC Advisor | /путь/файл:имя_функции | ||
Proxy Advisor | /путь/файл:имя_функции |
Примечание: Шаблон URL обязателен в директиве Service, если вы хотите выполнять преобразование путей.