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

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

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

Для получения общего представления о потоках см. раздел «Управление выполнением прокси-сервера с помощью потоков» .

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

Прикрепление политик к потокам

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

Например:

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

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

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

В панели «Добавить шаг» создается новый экземпляр политики с типом политики «Квота» и отображаемым именем Quota-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>

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

О потоках условного характера

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

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

  • Конвейер обработки запросов 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, условие оценивается как истинное, и выполняется логика, связанная с условным потоком.

Затем разработчики приложений получают доступ к вашим ресурсам, отправляя запросы к 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 после базового пути.

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

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

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

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

Теперь ознакомьтесь с XML-конфигурацией ProxyEndpoint. В меню «Навигатор» выберите Flow-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>

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

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