기존 API 프록시에 Node.js 추가

Apigee Edge 문서입니다.
Go to the 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에서 코드를 찾을 것으로 예상되는 위치입니다.

ScriptTarget으로 Node.js 타겟 지정

Node.js를 프록시에 통합하는 핵심은 타겟 엔드포인트의 XML 파일에서 <ScriptTarget> 요소를 지정하는 것입니다. 프록시 파일 구조에서 이 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> 요소는 백엔드 서비스인 Apigee 모의 타겟 서비스의 URL을 지정합니다.

하지만 Node.js의 경우 the Node.js 애플리케이션 자체 타겟입니다. apiproxy/targets/default.xml 파일에서 <ScriptTarget>으로 이를 지정합니다.

타겟이 <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 리소스는 API 프록시 범위의 /apiproxy/resources/node에 있어야 합니다.

ScriptTarget에서 추가 매개변수를 설정할 수 있습니다. 자세한 내용은 고급 ScriptTarget 구성을 참조하세요.

이 예시를 위해 server.js라는 기본 Node.js 파일의 소스 코드는 다음과 같습니다. server.js. 요청을 수신할 때 'Hello World!'를 반환하는 기본 HTTP 서버입니다.

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라는 이름으로 지정된다고 가정하면 Node.js 스크립트가 포함된 API 프록시의 구조는 다음과 같습니다.

/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에 배포할 준비가 된 것입니다.

Apigee 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 이 플래그를 사용하면 앱이 배포될 때 생성되는 프록시의 이름을 지정할 수 있습니다. 이 이름은 관리 UI에 표시됩니다.
  • -d API 프록시의 루트 디렉터리를 지정합니다.
  • -o, -e, -u, -p는 조직 이름, 배포 환경, 사용자 이름, 비밀번호를 지정합니다.
이것으로 끝입니다. Node.js 앱이 API 프록시에 래핑되어 Edge에 배포되고 실행됩니다. 요청을 기다리고 있으며 테스트할 준비가 되었습니다.

새 API 프록시 테스트

기존 API 프록시에 Node.js 앱을 추가하고 Apigee Edge에 프록시를 배포했습니다. 테스트하려면 이 cURL 명령어를 실행합니다. 기본 기본 경로 (/)가 사용된다고 가정합니다 (기본 경로 는 프록시 엔드포인트 구성 파일에 지정됨). 조직 이름을 org_name으로 대체해야 합니다. cURL이 설치되어 있지 않은 경우 브라우저에 URL을 입력할 수 있습니다.

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

관리 UI에서 새 프록시 보기

Apigee Edge 계정에 로그인하고 API 프록시 페이지로 이동합니다. 거기에 'hellonode'라는 프록시가 표시됩니다.

'hellonode'를 클릭하여 프록시에 대한 세부정보를 확인합니다. 개발 뷰에서 업로드한 소스 코드를 확인하고, 정책을 추가하고, 흐름을 수정할 수 있습니다.

다음 단계

Apigee Edge에서 실행되는 Node.js 애플리케이션 디버깅에 대한 자세한 내용은 Node.js 프록시 디버깅 및 문제 해결을 참조하세요.