Переменные запроса и ответа

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Когда вы делаете запрос к прокси-серверу API, вы можете передать любую или всю следующую информацию, в зависимости от способа настройки прокси-сервера API:

  • Заголовки запросов
  • Параметры запроса
  • Данные формы
  • Полезные данные XML или JSON
  • URI ресурсов

По умолчанию все данные в запросе передаются без изменений из ProxyEndpoint в TargetEndpoint. Таким образом, когда TargetEndpoint отправляет запрос на внутренний сервер, вся информация в исходном запросе передается внутренней службе.

То же самое относится и к ответу, полученному Edge от серверной службы. По умолчанию все данные, полученные в ответе, передаются без изменений приложению, отправившему запрос.

Как данные запроса передаются на внутренний сервер?

На следующем изображении показано определение прокси-сервера API:

Запрос от HTTP-клиента, проходящий через конечную точку прокси-сервера к целевой конечной точке на серверной стороне, для доступа к службе HTTP. Предоставляются примеры конечной точки прокси и целевой конечной точки.

Для этого прокси 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 : эти политики позволяют вам написать сценарий для доступа к переменным потока, содержащим данные запроса и ответа.