Apigee Edge 문서입니다.
Apigee X 문서로 이동 정보
소개
이 주제에서는 로컬 파일 시스템의 기존 프록시에 Node.js 애플리케이션을 추가하는 방법과 Apigee Edge에 프록시를 배포하는 방법을 설명합니다.
개발 환경 준비
이 주제에서는 로컬 시스템에 이미 프록시 개발 환경이 설정되어 있고 Node.js 애플리케이션을 프록시 개발 환경에 통합하려고 한다고 가정합니다.
Node.js 앱이 포함된 프록시 애플리케이션의 기본 구조는 아래 그림에 표시된 패턴을 따르며 기본 /apiproxy 폴더와 resources, targets, proxies의 하위 폴더가 있습니다. Node.js 파일은 apiproxy/resources/node 폴더에 배치해야 합니다. 다른 폴더에는 프록시 및 대상 엔드포인트, 프록시 흐름, 조건부 흐름 등을 정의하는 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의 경우 Node.js 애플리케이션 자체 가 타겟입니다. apiproxy/targets/default.xml 파일에서 <ScriptTarget>을 사용하여 지정합니다.
타겟이 <HTTPTargetConnection> 요소를 사용하여 백엔드 서비스의 URL을 지정하는 대신 다음과 같이 <ScriptTarget> 요소를 사용하여 Node.js 애플리케이션을 직접 참조합니다.
<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 파일의 소스 코드를 제공합니다. 요청을 수신할 때 '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 유틸리티를 사용하여 모든 종속 항목을 파일 시스템에 쉽게 가져올 수 있습니다.
- Node.js 애플리케이션의 기본 디렉터리에서 다음을 실행합니다.
$ npm install
또는
$ npm update
종속 항목이 설치되면 Edge에 프록시를 배포할 수 있습니다.
Apigee Edge에 Node.js 앱 배포
배포하기 전에 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: 조직 이름, 배포 환경, 사용자 이름, 비밀번호를 지정합니다.
새 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 프록시 디버깅 및 문제 해결을 참고하세요.