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

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

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

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

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

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

Как данные запроса передаются на бэкэнд-сервер?

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

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

Для этого API-прокси:

  • Виртуальный хост API-прокси: "default"
  • Домен, определенный виртуальным хостом: "http://myOrg-prod.apigee.net"
  • Базовый путь прокси: "/v1/weather"
  • В правиле маршрутизации указана целевая конечная точка: "default"
  • Целевой 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 : "GET"
  • proxy.basepath : "/v1/weather"
  • proxy.pathsuffix : "forecastrss"
  • 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-прокси может иметь несколько целевых конечных точек (TargetEndpoint). Целевая конечная точка, используемая запросом, определяется его данными. Затем эти данные удаляются из запроса перед отправкой его в бэкэнд-сервис.

То же самое относится и к данным в ответе. В процессе обработки ответа API-прокси может захотеть изменить данные, прежде чем вернуть их запрашивающему приложению.

сообщения с запросами доступа

С помощью политик можно получать доступ к частям сообщения запроса и изменять их. К таким частям относятся:

  • Заголовки
  • Параметры запроса
  • Параметры формы
  • IP-адрес источника
  • тело HTTP-сообщения

В обычном режиме работы, после обработки запроса, прокси-сервер отправляет преобразованный запрос целевому получателю.

Политики могут анализировать переменные запроса, а затем преобразовывать или отклонять запрос в зависимости от содержимого этих переменных. Политики преобразуют запрос, устанавливая соответствующие переменные, например, переменные, соответствующие заголовкам запроса.

Доступ к ответным сообщениям

Используя переменные, относящиеся к ответному сообщению, политики могут получать доступ к компонентам сообщения, включая заголовок, параметры запроса и параметры формы, исходный IP-адрес, тело HTTP-сообщения и так далее.

Прокси-сервер получает ответное сообщение, а затем применяет к нему ряд политик, основанных на условиях, оцениваемых в ответе, которые могут изменять или преобразовывать ответ.

Политики могут анализировать переменные ответа, а затем преобразовывать или отклонять запрос в зависимости от содержимого этих переменных. Политики преобразуют ответ, устанавливая соответствующие переменные, например, переменные, соответствующие заголовкам ответа.

Общие правила доступа к переменным потока

Edge определяет несколько политик, которые можно использовать для обработки данных запроса и ответа. К этим политикам относятся:

  • Политика AssignMessage : Создает или изменяет сообщения HTTP-запроса или ответа в процессе работы API-прокси. Также создает и заполняет новые переменные потока.
  • Политика ExtractVariables : Извлекает содержимое сообщений, включая заголовки, пути URI, полезную нагрузку и параметры запроса, для использования в условном операторе. Затем политика применяет текстовый шаблон к содержимому сообщения и, найдя совпадение, устанавливает указанную переменную.
  • Политики JSONtoXML и XMLtoJSON : преобразуют сообщения из формата JSON (JavaScript Object Notation) в формат XML (Extensible Markup Language) или наоборот.
  • Политика JavaCallout , политика JavaScript , политика PythonScript , политика RegularExpressionProtection : эти политики позволяют написать скрипт для доступа к переменным потока, содержащим данные запроса и ответа.