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

Для этого прокси-сервера API:
- Виртуальный хост прокси-сервера API: "default"
- Домен, определенный виртуальным хостом: "http://myOrg-prod.apigee.net"
- Базовый путь прокси-сервера: "/v1/weather"
- TargetEndpoint, указанный правилом маршрута: "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: преобразуют сообщения из формата JavaScript Object Notation (JSON) в формат расширяемого языка разметки (XML) или наоборот.
- Правило JavaCallout, правило JavaScript, правило PythonScript, правило RegularExpressionProtection. Эти правила позволяют написать скрипт для доступа к переменным потока, содержащим данные запроса и ответа.