Шаг 4. Добавьте правило

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

Теперь, когда вы изменили целевую конечную точку, можно добавить в прокси-сервер правило.

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

В этом руководстве вы добавите в прокси-сервер правило XMLtoJSON. Это правило преобразует полезную нагрузку XML-сообщения в JSON. Также изменяется заголовок Content-Type ответа.

Чтобы добавить в прокси-сервер правила XML в JSON:

  1. Откройте интерфейс Edge в браузере и войдите в аккаунт.
  2. Нажмите API Proxies (Прокси API) в главном окне и выберите прокси. В этом примере выберите прокси-сервер API, созданный на шаге 1.
  3. Нажмите на вкладку Разработка:

    В Edge откроется редактор прокси API.

  4. На панели Навигатор нажмите Конечные точки прокси > по умолчанию > PreFlow:

    В Edge откроется редактор потоков:

    Кроме того, Edge отображает конфигурацию конечной точки прокси-сервера по умолчанию на панели Код:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
      <Description/>
      <FaultRules/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <Flows/>
      <HTTPProxyConnection>
        <BasePath>/getstarted</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. Чтобы добавить правило в прокси, нажмите кнопку + Шаг в PreFlow ответа (нижняя половина редактора потоков):

    В диалоговом окне Добавить в Edge отображается список политик, которые можно добавить в поток:

  6. Прокрутите страницу вниз и выберите правило XML to JSON (XML в JSON) в категории "Медиация".
  7. Оставьте названия по умолчанию и нажмите Добавить.

    Edge прикрепляет новое правило к PreFlow ответа:

    Обратите внимание, что при нажатии кнопки Добавить Edge выполняет следующие действия:

    • Новое правило будет добавлено в раздел Правила на панели Навигатор.
    • Добавляет правило XML в JSON на панели Flow (Процесс).
    • В области Код отображается XML-код конфигурации правила.
  8. Нажмите Сохранить, чтобы сохранить текущую версию с внесенными изменениями.

Попробуйте! В окне терминала выполните следующую команду curl:

curl https://org_name-test.apigee.net/getstarted

Где:

Вы также можете открыть тот же URL в браузере.

Вы должны получить следующий ответ:

{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

Если тело ответа выглядит иначе, проверьте следующее:

  1. Целевая конечная точка – "https://mocktarget.apigee.net/xml", как описано в шаге 3: измените целевую конечную точку:
    • Если вы получили ответ "Здравствуйте, гость!", добавьте "/xml" в конец целевой конечной точки.
    • Если вы получили ошибку 404, убедитесь, что вы обращаетесь к домену apigee.net, а не apigee.com.
  2. Развернута последняя версия прокси. Попробуйте повторно развернуть прокси-сервер API, как описано в разделе Развертывание и отмены развертывания прокси-сервера API.

Чтобы посмотреть заголовки HTTP-запроса и ответа, включите подробный режим в curl с помощью параметра -vs (v делает ответ подробным, а s скрывает некоторые менее интересные детали). Пример:

curl -vs https://ahamilton-eval-test.apigee.net/getstarted | python -m json.tool

Вы получите ответ, похожий на приведенный ниже. Обратите внимание, что заголовок Content-Type в ответе имеет значение application/json. Правило преобразования XML в JSON изменяет заголовок перед отправкой ответа.

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to ahamilton-eval-test.apigee.net (10.20.30.40) port 443 (#0)
...
> GET /getstarted HTTP/1.1
> Host: ahamilton-eval-test.apigee.net
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 25 May 2018 16:20:00 GMT
< Content-Type: application/json;charset=UTF-8
< Content-Length: 77
< Connection: keep-alive
< X-Powered-By: Apigee
< Access-Control-Allow-Origin: *
...
{ [77 bytes data]
{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

Дальнейшие действия

Подробнее