Добавление Node.js к существующему прокси-серверу API

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

Введение

В этом разделе объясняется, как добавить приложение Node.js к существующему прокси-серверу в вашей локальной файловой системе и как развернуть прокси-сервер в Apigee Edge.

Подготовка среды разработки

В этом разделе мы предполагаем, что в вашей локальной системе уже настроена среда разработки прокси-сервера и вы хотите интегрировать в нее приложение Node.js.

Базовая структура прокси-приложения, включающего приложение Node.js, соответствует шаблону, показанному на рисунке ниже, с базовой папкой /apiproxy и подпапками для ресурсов , целей и прокси . В папке apiproxy/resources/node необходимо разместить файлы Node.js. Другие папки содержат XML-файлы, которые определяют прокси-сервер и целевые конечные точки, поток прокси-сервера, условные потоки и т. д. Более полное описание структуры API-прокси см. в справочнике по настройке API-прокси .

Просто помните, что любой код Node.js, являющийся частью прокси, должен быть помещен в /apiproxy/resources/node . Именно здесь Edge ожидает найти его при развертывании.

Укажите цель Node.js с помощью ScriptTarget.

Ключом к интеграции Node.js в прокси является указание элемента <ScriptTarget> в XML-файле целевой конечной точки. В структуре прокси-файла этот XML-файл находится в apiproxy/targets . По умолчанию имя файла — default.xml.

Для контекста учтите, что целевая конечная точка обычно указывает на какую-либо серверную службу. В данном случае мы обращаемся к фиктивному целевому сервису Apigee. Определение целевой конечной точки выглядит следующим образом:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

Элемент <HTPTTargetConnection> указывает URL-адрес внутренней службы, целевой целевой службы Apigee.

Однако в случае Node.js целью является само приложение Node.js. Это указывается с помощью <ScriptTarget> в файле apiproxy/targets/default.xml .

Вместо цели, использующей элемент <HTPTTargetConnection> для указания URL-адреса внутренней службы, ссылка на приложение Node.js осуществляется напрямую с помощью элемента <ScriptTarget>, например:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

Параметр <ResourceURL> всегда должен иметь префикс node:// , за которым следует имя основного скрипта Node.js. И, как отмечалось ранее, ресурсы Node.js должны находиться в /apiproxy/resources/node в области прокси-сервера API.

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

Для целей этого примера вот исходный код основного файла Node.js, который называется server.js . Это базовый HTTP-сервер, который возвращает «Hello World!» когда он получает запрос:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

Подводя итог, предположим, что основное приложение Node.js реализовано в файле с именем server.js и что обе конфигурации конечной точки имеют имя default.xml , тогда прокси-сервер API, содержащий сценарий Node.js, имеет следующую структуру:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

Подготовьтесь к развертыванию приложения

Большинство приложений Node.js имеют файлы зависимостей и файл package.json в базовом каталоге. В этом случае лучше всего запустить утилиту npm , чтобы убедиться, что каталог node_modules верхнего уровня заполнен зависимостями перед развертыванием. Если есть какие-либо удаленные зависимости, которые не включены в node_modules , ваше приложение Node.js не будет работать в Edge.

Вы можете легко получить все зависимости в вашей файловой системе с помощью утилиты npm :

  1. В базовом каталоге вашего приложения Node.js запустите:
$ npm install 

или

$ npm update

Когда зависимости установлены, вы готовы развернуть прокси-сервер в Edge.

Разверните приложение Node.js в Apigee Edge.

Перед развертыванием вам необходимо знать название вашей организации, имя пользователя и пароль для вашей учетной записи Apigee Edge . Эта информация понадобится вам для правильного формирования команды средства развертывания.

Вот команда. Предполагается (с флагом -d), что вы находитесь в корневом каталоге вашего прокси. Если ваш прокси называется foo , введите эту команду из каталога foo :

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
Чтобы получить информацию о том, что означает каждый из флагов команды, выполните следующие действия:

$ apigeetool deployproxy -h

Для краткого резюме:

  • -n Этот флаг позволяет указать имя прокси-сервера, который будет создан при развертывании приложения. Вы увидите это имя в пользовательском интерфейсе управления.
  • -d Указывает корневой каталог прокси-сервера API.
  • -o , -e , -u и -p указывают имя организации, среду развертывания, имя пользователя и пароль.
Вот и все. Ваше приложение Node.js оборачивается прокси-сервером API, развертывается в Edge и выполняется. Он ожидает запросов и готов к тестированию.

Протестируйте новый прокси API

Вы только что добавили приложение Node.js к существующему прокси-серверу API и развернули прокси-сервер в Apigee Edge! Чтобы проверить это, запустите эту команду cURL. Мы предполагаем, что используется базовый путь по умолчанию (/) (базовый путь указан в файле конфигурации конечной точки прокси). Обязательно замените название организации на имя организации . Если у вас не установлен cURL, вы можете ввести URL-адрес в браузере.

$ curl http://org_name-test.apigee.net/
Hello, Node!

Просмотрите новый прокси в пользовательском интерфейсе управления.

Войдите в свою учетную запись Apigee Edge и перейдите на страницу прокси-серверов API. Там вы увидите прокси-сервер под названием «hellonode».

Нажмите «hellonode», чтобы просмотреть подробную информацию о прокси. В представлении «Разработка» вы можете просмотреть загруженный вами исходный код, добавить политики, изменить потоки и т. д.

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

Информацию об отладке приложений Node.js, работающих в Apigee Edge, см. в разделе Отладка и устранение неполадок прокси-серверов Node.js.