Как добавить Node.js в существующий прокси-сервер API

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

Введение

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

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

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

Основная структура прокси-приложения, включающего приложение Node.js, соответствует шаблону, показанному на рисунке ниже, с базовой папкой /apiproxy и вложенными папками для ресурсов, целей и прокси. Файлы Node.js должны находиться в папке apiproxy/resources/node. В других папках содержатся 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 main реализовано в файле 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.js есть удаленные зависимости, не включенные в node_modules, оно не будет работать в 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.