Настройка потоков

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

Потоки — это основные строительные блоки прокси API. Потоки позволяют вам программировать поведение API, позволяя вам настроить последовательность, в которой политики и код выполняются прокси-сервером API.

Концептуальный обзор потоков см. в разделе Управление работой прокси с помощью потоков .

В этом разделе описывается, как создавать условные потоки и добавлять логику (политики) к потокам на высоком уровне. Искусство создания условий требует большего количества деталей, чем то, что рассматривается в этой теме. Подробности см. в разделах Обзор переменных потока и Условия с переменными потока .

Привязка политик к потокам

Edge поставляется с множеством различных типов предопределенных политик для реализации безопасности, управления трафиком и манипулирования сообщениями. Кроме того, политики позволяют добавлять собственный код для полной настройки обработки сообщений.

Например:

  • Прикрепите политику безопасности OAuth к запросу PreFlow ProxyEndpoint . Поскольку запрос ProxyEndpoint PreFlow является первым потоком в конвейере, вы можете немедленно отклонить запрос, если он нарушает ваши политики безопасности.
  • Прикрепите политику преобразования JSON в XML к ответу PostFlow TargetEndpoint, чтобы преобразовать ответ из JSON в XML.
  • Прикрепите политику JavaScript к условному потоку ProxyEndpoint , чтобы выполнить код JavaScript для обработки запроса.

После создания условного потока он доступен для прикрепления политики. Выбрав поток, щелкните значок + Шаг на диаграмме запроса или ответа, чтобы добавить в поток новую или существующую политику.

В меню «Навигатор» выделен пример условного потока с именем «Проблема», а на панели «Поток» отображается кнопка «Шаг».

На панели «Добавить шаг» создается новый экземпляр политики с типом политики «Квота» и отображаемым именем «Квота-2».

Прикрепляя политику к выбранному потоку, вы настраиваете прокси-сервер API для применения политики квот только для запросов, сделанных к этому URI потока и комбинации команд. Например, если вы прикрепите политику к потоку обучения в запросе, в представлении кода редактора прокси будет создан следующий XML-код:

<ProxyEndpoint name="default">
...
   <Flow name="issue">
        <Description/>
        <Request>
            <Step>
                <Name>Quota-2</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
    </Flow>
... 
</ProxyEndpoint>

В этой конфигурации, если запрос GET поступает на прокси-сервер API с шаблоном URI ... /issue/** (/issue/ с чем-либо в URI после последней косой черты), к этому вызову API применяется квота. .

Об условных потоках

Любые политики, прикрепленные к PreFlow или PostFlow, выполняются всегда. Однако политики в условном потоке выполняются только в том случае, если условие потока оценивается как истинное.

Во время обработки запроса и ответа в каждом сегменте выполняется только один условный поток — первый поток, условие которого оценивается как истинное. Это означает, что вы можете выполнить один условный поток как часть каждого из:

  • Конвейер запросов ProxyEndpoint
  • Конвейер запросов TargetEndpoint
  • Конвейер ответов ProxyEndpoint
  • Конвейер ответов TargetEndpoint

Видео. Посмотрите короткое видео, чтобы узнать больше об условных потоках.

Например, следующее определение ProxyEndpoint показывает условный поток, который выполняется ProxyEndpoint при любом запросе HTTP GET к прокси-серверу API:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>request.verb="GET"</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

Обратите внимание, что условие ссылается на переменную потока request.verb . Переменная потока — это именованные ссылки, которые содержат информацию о состоянии, связанную с транзакцией API, обрабатываемой Edge. Edge определяет множество переменных состояния, на которые вы можете ссылаться.

Службы RESTful — это коллекции ресурсов API. Ресурс API — это фрагмент пути URI, который идентифицирует некоторый объект, к которому разработчики могут получить доступ, вызвав ваш API. Например, если серверная часть вашего сервиса предоставляет отчеты о погоде и прогнозы погоды, ваш API может определить два условных потока, которые сопоставляются с этими ресурсами API: /reports и /forecasts . Когда вызов API включает один из этих ресурсов в URL-адрес, условие оценивается как true и выполняется логика, прикрепленная к условному потоку.

Затем разработчики приложений получают доступ к вашим ресурсам, отправляя запросы по URL-адресу в форме:

http://myAPIs.myCo.com/weather/reports

или:

http://myAPIs.myCo.com/weather/forecasts

В прокси-сервере API вы можете определить условный поток, соответствующий определенному ресурсу:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>   
  <Flows>
    <Flow name="Flow-1">
      <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
      <Request/>
      <Response/>
    </Flow>
    <Flow name="Flow-2">
      <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

В этом примере вы ссылаетесь на переменную потока proxy.pathsuffix , которая содержит суффиксную часть URL-адреса, используемого для доступа к прокси-серверу API. Затем вы можете прикрепить разные политики к условному потоку для каждого ресурса.

Добавление условного потока

В этом кратком примере вы настраиваете поток, который выполняется только в том случае, если сообщением запроса является HTTP GET.

Чтобы добавить условный поток, выберите вкладку «Разработка» в конструкторе прокси API.

Вкладка «Разработка» в конструкторе прокси

Нажмите значок + в нужной конечной точке.

Добавить кнопку условного потока

Форма «Новый условный поток» позволяет присвоить имя потоку и настроить условие. В следующем примере вы добавляете простое условие, которое оценивает HTTP сообщения запроса для команды GET (в отличие от PUT , POST и т. д.) по любому URI после базового пути.

На панели «Новый условный поток» поток называется «Поток-1», и настраиваются тип условия, путь и команда.

(Узнайте, как создавать условные операторы в переменных и условиях Flow .)

Новый поток под названием Flow-1 теперь отображается в меню «Навигатор».

Поток-1 выделен

Теперь обратите внимание на конфигурацию XML для ProxyEndpoint. Выберите «Поток-1» в меню «Навигатор» .

Вы увидите следующую конфигурацию.

<PreFlow name="PreFlow">
    <Request/>
    <Response/>
</PreFlow>   
<Flows>
    <Flow name="Flow-1">
      <Request/>
      <Response/>
      <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
    </Flow>
</Flows>
<PostFlow name="PostFlow">
    <Request/>
    <Response/>
</PostFlow>

Следующие шаги

В следующих разделах представлена ​​более подробная информация о построении условий и использовании переменных: