Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X. информация
Когда вы делаете запрос к прокси-серверу API, вы можете передать любую или всю следующую информацию, в зависимости от способа настройки прокси-сервера API:
- Заголовки запросов
- Параметры запроса
- Данные формы
- Полезные данные XML или JSON
- URI ресурсов
По умолчанию все данные в запросе передаются без изменений из ProxyEndpoint в TargetEndpoint. Таким образом, когда TargetEndpoint отправляет запрос на внутренний сервер, вся информация в исходном запросе передается внутренней службе.
То же самое относится и к ответу, полученному Edge от серверной службы. По умолчанию все данные, полученные в ответе, передаются без изменений приложению, отправившему запрос.
Как данные запроса передаются на внутренний сервер?
На следующем изображении показано определение прокси-сервера API:
Для этого прокси API:
- Виртуальный хост API-прокси: «по умолчанию»
- Домен, определенный виртуальным хостом: «http://myOrg-prod.apigee.net».
- Базовый путь прокси: «/v1/weather»
- TargetEndpoint, указанный правилом маршрута: «по умолчанию».
- Целевой URL-адрес: «http://weather.yahooapis.com».
Клиентское приложение отправляет запрос GET
к прокси-серверу API, используя следующую команду curl
:
curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
Обратите внимание, что этот запрос содержит ресурс «forecastrss» и один параметр запроса, w
. Edge анализирует запрос, как показано ниже, и присваивает части запроса переменным потока:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
Переменные потока устанавливаются со следующими значениями:
-
request.verb
: «ПОЛУЧИТЬ» -
proxy.basepath
: "/v1/weather" -
proxy.pathsuffix
: "прогнозстрсс" -
request.querystring
: "w=12797282"
Затем TargetEndpoint отправляет запрос к серверной службе, используя информацию из запроса:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
Обратите внимание, как параметры ресурса и запроса, указанные в запросе, автоматически включаются в запрос к внутреннему серверу. Судя по определению TargetEndpoint, запрос имеет форму:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
Как и параметры запроса, любые заголовки или параметры формы, которые вы включаете в запрос к прокси-серверу API, передаются на внутренний сервер. Например, вы делаете запрос ниже, который включает заголовок:
curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282
Или запрос в форме ниже на включение заголовка и данных формы:
curl -X POST -H "Content-type:application/json" -d \ '{"email" : "janetutorialxml@example.com", "firstName" : "Jane", "lastName" : "Tutorial", "userName" : "jtutorialxml" }' \ http://myOrg-prod.apigee.net/v1/register/user
В обоих примерах заголовки и данные формы передаются серверной службе без изменений. Заголовки представлены переменными потока, такими как request.headers.count
и request.headers.names
. Данные формы представлены переменными потока, такими как request.formparam.count
и request.formparam.names
.
Как возвращаются данные ответа?
По умолчанию все данные, полученные Edge от серверной службы в ответе, передаются без изменений приложению, отправившему запрос. Как описано выше для запроса, данные, возвращаемые в ответе, доступны через переменные потока на Edge. Дополнительные сведения см. в разделе Справочник по переменным потока .
Доступ к данным запроса и ответа в прокси-сервере API
Во многих случаях вам нужно изменить данные запроса перед отправкой их на внутренний сервер. Например:
- Чтобы удалить информацию безопасности, используемую Edge для проверки запросов. Эта информация не требуется серверной службе.
- Чтобы добавить данные, отправляемые в серверную службу, например для отслеживания пользователей или сбора аналитики.
- Условно обработать запрос на основе данных запроса. Например, прокси-сервер API может иметь несколько TargetEndpoints. TargetEndpoint, используемый запросом, определяется данными запроса. Затем вы удаляете эти данные из запроса перед отправкой их во внутреннюю службу.
То же самое относится и к данным в ответе. В рамках обработки ответа прокси-сервер API может захотеть изменить данные перед их возвратом запрашивающему приложению.
Сообщения с запросами на доступ
Вы можете использовать политики для доступа и изменения частей сообщения запроса. Эти части включают в себя:
- Заголовки
- Параметры запроса
- Параметры формы
- Исходный IP-адрес
- Тело HTTP-сообщения
В обычном потоке после обработки запроса прокси-сервер отправляет преобразованный запрос цели.
Политики могут проверять переменные запроса, а затем преобразовывать или отклонять запрос на основе содержимого этих переменных. Политики преобразуют запрос, устанавливая соответствующие переменные, например переменные, соответствующие заголовкам запроса.
Доступ к ответным сообщениям
Используя переменные, которые применяются к ответному сообщению, политики могут получать доступ к компонентам сообщения, включая заголовок, параметры запроса и параметры формы, исходный IP-адрес, тело HTTP-сообщения и т. д.
Прокси-сервер получает ответное сообщение, затем применяет к нему ряд политик, основанных на условиях, оцененных в ответе, которые могут изменить или преобразовать ответ.
Политики могут проверять переменные ответа, а затем преобразовывать или отклонять запрос на основе содержимого этих переменных. Политики преобразуют ответ, устанавливая соответствующие переменные, например переменные, соответствующие заголовкам ответа.
Общие политики для доступа к переменным потока
Edge определяет несколько политик, которые вы можете использовать для обработки данных запросов и ответов. Эта политика включает в себя:
- Политика AssignMessage : создает или изменяет сообщения HTTP-запроса или ответа во время потока прокси-сервера API. Также создает и заполняет новые переменные потока.
- Политика ExtractVariables : извлечение содержимого из сообщений, включая заголовки, пути URI, полезные данные и параметры запроса, для использования в операторе условия. Затем политика применяет текстовый шаблон к содержимому сообщения и при обнаружении соответствия устанавливает назначенную переменную.
- Политика JSONtoXML и политика XMLtoJSON : преобразует сообщения из нотации объектов JavaScript (JSON) в формат расширяемого языка разметки (XML) или наоборот.
- Политика JavaCallout , политика JavaScript , политика PythonScript , политика RegularExpressionProtection : эти политики позволяют вам написать сценарий для доступа к переменным потока, содержащим данные запроса и ответа.