Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee X.info
При отправке запроса к API-прокси вы можете передать любую или всю из следующих сведений, в зависимости от конфигурации API-прокси:
- Заголовки запроса
- Параметры запроса
- Данные формы
- Полезные данные в формате XML или JSON
- URI ресурсов
По умолчанию все данные запроса передаются без изменений от ProxyEndpoint к TargetEndpoint. Поэтому, когда TargetEndpoint отправляет запрос на бэкэнд-сервер, вся информация из исходного запроса передается в бэкэнд-сервис.
То же самое относится и к ответу, полученному Edge от серверной службы. По умолчанию все данные, полученные в ответе, передаются в неизменном виде приложению, отправившему запрос.
Как данные запроса передаются на бэкэнд-сервер?
На следующем изображении показано определение прокси-сервера API:

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