Прикрепление политики к потоку ProxyEndpoint или TargetEndpoint

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

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

Выбор точки прикрепления имеет решающее значение для работы вашего API-прокси. Например, если вы прикрепите политику квот к потоку ответа, то квота будет применяться после отправки запроса в бэкэнд-сервис. Это противоречит цели применения политики квот! Поэтому вам необходимо прикрепить политику квот в качестве этапа обработки в потоке запроса.

Формат приложения к полису следующий:

<Step>
    <Name>{policy_name}</Name>
</Step>

Например:

<Step>
    <Name>QuotaPolicy</Name>
</Step>

Политика прикрепляется к потоку путем добавления конфигурации шага к соответствующему элементу потока запроса или ответа в конфигурации ProxyEndpoint или TargetEndpoint.

К потоку запроса или ответа можно прикрепить политику. Потоки запроса и ответа, в свою очередь, подразделяются на предварительный поток (PreFlow) и последующий поток (PostFlow).

В следующем примере показана минимальная конфигурация ProxyEndpoint без каких-либо прикрепленных политик. Она просто определяет (входящее) HTTPProxyConnection и RouteRule.

<ProxyEndpoint name="default">
    <HTTPProxyConnection>
        <BasePath>/weather</BasePath>
        <VirtualHost>default</VirtualHost>
    </HTTPProxyConnection>
    <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
    </RouteRule>
</ProxyEndpoint>

Необходимо изменить эту конфигурацию таким образом, чтобы ProxyEndpoint применял политику квотирования (в качестве этапа обработки) до того, как API-прокси выполнит какую-либо другую обработку. Если разработчик превысил квоту, не следует тратить вычислительные ресурсы на дополнительные запросы.

Для обеспечения выполнения этой конфигурации необходимо добавить этап обработки к предварительному потоку запроса следующим образом:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>QuotaPolicy</Name></Step>
    </Request>
  </PreFlow>
  <HTTPProxyConnection> 
    <BasePath>/weather</BasePath> 
    <VirtualHost>default</VirtualHost> 
  </HTTPProxyConnection> 
  <RouteRule name="default"> 
    <TargetEndpoint>default</TargetEndpoint> 
  </RouteRule> 
</ProxyEndpoint>

Иногда может потребоваться, чтобы политика выполнялась после какой-либо другой первоначальной обработки на ProxyEndpoint. Например, вы хотите проверить квоту в PreFlow, а затем выполнить еще один набор операций после проверки квоты, например, преобразовать запрос из JSON в XML. Для этого прикрепите политику к пути запроса PostFlow. Ниже приведен пример прикрепления политики к запросу PostFlow. Эта политика будет выполняться для сообщения запроса после выполнения всех политик в PreFlow (и любых условных потоков).

<PostFlow>
  <Request>
    <Step><Name>JSONtoXMLPolicy</Name></Step>
  </Request>
</PostFlow>

Ниже прилагается пример PostFlow для обработки ответа. Эта политика будет выполняться для полученного ответного сообщения. (PostFlow для обработки ответа ProxyEndpoint — это заключительный этап обработки перед отправкой ответа запрашивающему клиентскому приложению.)

<PostFlow>
  <Response>
    <Step><Name>XMLtoJSONPolicy</Name></Step>
  </Response>
</PostFlow>