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

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

Введение

В этой теме объясняется, как добавить приложение 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>

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

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

Вместо использования элемента <HTTPTargetConnection> для указания 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. Предполагается, что используется базовый путь по умолчанию (/) (базовый путь указывается в файле конфигурации конечной точки прокси). Обязательно замените org_name на название вашей организации. Если у вас не установлен cURL, вы можете ввести URL-адрес в браузере.

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

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

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

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

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

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

,

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

Введение

В этой теме объясняется, как добавить приложение 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>

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

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

Вместо использования элемента <HTTPTargetConnection> для указания 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. Предполагается, что используется базовый путь по умолчанию (/) (базовый путь указывается в файле конфигурации конечной точки прокси). Обязательно замените org_name на название вашей организации. Если у вас не установлен cURL, вы можете ввести URL-адрес в браузере.

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

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

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

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

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

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