<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
이 주제에서는 자바스크립트를 사용하여 HTTP 헤더를 JSON 응답을 파싱하고 속성의 하위 집합을 확인할 수 있습니다.
샘플 코드 다운로드 및 사용해 보기
<ph type="x-smartling-placeholder">이 레시피북 예시 정보
이 설명서의 예는 다음과 같이 API 동작을 구현하는 API 프록시 패턴을 보여줍니다. 있습니다. 간단한 변수로 작업하는 방법을 보여주는 자바스크립트 예제 확인할 수 있습니다 한 샘플은 변수를 get 및 set하는 방법을 보여줍니다. 두 번째 예시는 JSON을 파싱하고 결과에서 메시지를 구성하는 방법을 보여줍니다.
API 프록시에는 두 개의 JavaScript 샘플이 있습니다.
setHeaders.js
: 이 자바스크립트는 API 프록시가 호출될 때 설정됩니다 JavaScript는 이러한 변수를 응답에 추가합니다. 메시지를 표시하여 각 요청에 대한 값을 확인할 수 있습니다.minimize.js
: 이 JavaScript는 메시지 작업 방법을 보여줍니다. 있습니다. 이 샘플의 아이디어는 서비스가 필요한 것보다 더 많은 데이터를 반환하는 경우가 많다는 것입니다. 있습니다. 따라서 JavaScript는 응답 메시지를 파싱하고 속성을 사용하여 응답 메시지의 콘텐츠를 작성합니다.
setHeader.js
의 코드는 다음과 같습니다.
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name")); context.setVariable("response.header.X-Apigee-ApiProxyName", context.getVariable("apiproxy.name")); context.setVariable("response.header.X-Apigee-ProxyName", context.getVariable("proxy.name")); context.setVariable("response.header.X-Apigee-ProxyBasePath", context.getVariable("proxy.basepath")); context.setVariable("response.header.X-Apigee-ProxyPathSuffix", context.getVariable("proxy.pathsuffix")); context.setVariable("response.header.X-Apigee-ProxyUrl", context.getVariable("proxy.url"));
minimize.js
의 코드는 다음과 같습니다.
// Parse the respose from the target. var res = JSON.parse(context.proxyResponse.content); // Pull out only the information we want to see in the response. var minimizedResponse = { city: res.root.city, state: res.root.state }; // Set the response variable. context.proxyResponse.content = JSON.stringify(minimizedResponse);
컨텍스트 객체를 통해 JavaScript에서 흐름 변수에 액세스할 수 있습니다. 이 객체는 Edge JavaScript 객체 모델입니다. 객체 모델에 대한 자세한 내용은 JavaScript 객체 모델을 참조하세요.
시작하기 전에
이 레시피북 예시를 살펴보기 전에 개념:
- 정책의 정의 및 프록시에 연결하는 방법 정책에 대한 좋은 소개를 위해 자세한 내용은 API란 정책?을 참조하세요.
- 흐름 구성에 설명된 프록시 흐름의 구조 Flow를 사용하면 API 프록시에서 정책을 실행하는 순서를 지정합니다. 이 예에서는 정책이 생성되어 API 프록시 흐름에 추가됩니다.
- API 프록시 프로젝트가 파일 시스템에서 구성되는 방식(다음 참조) API 프록시 구성 참조
- XML, JSON, JavaScript에 관한 실무 지식 이 예시에서는 프록시 및 해당 정책을 파일 시스템에 있는 XML 파일로 바꾸어야 합니다.
샘플 코드를 다운로드했다면 여기에서 설명한 모든 파일을 찾을 수 있습니다. javascript-cookbook 샘플 폴더에 있습니다. 다음 섹션에서는 샘플 코드를 자세히 살펴보겠습니다.
프록시 흐름 이해
JavaScript가 API 프록시에서 실행되도록 하려면 정책을 사용하여 흐름에 연결해야 합니다. 'Step'으로 이름을 지정했습니다 JavaScript (메모 대문자화) 유형의 정책에는 단순히 자바스크립트 파일의 이름에 대한 참조입니다. 개발자는 ResourceURL 요소.
예를 들어 다음 정책은
setHeader.js
<Javascript name='setHeaders' timeLimit='200'> <ResourceURL>setHeaders.js</ResourceURL> </Javascript>
다른 정책 유형과 마찬가지로 이 정책을 API 프록시 흐름에 연결할 수 있습니다. 기준 정책을 API 프록시 흐름에 연결하면 JavaScript를 실행할 위치를 지정합니다. 이를 통해 요청 메시지 또는 응답 메시지와 상호작용하는 JavaScript를 실행할 수 있습니다. 이러한 메시지가 API 프록시를 통해 확인할 수 있습니다 이 예에서 두 JavaScript는 모두 정책은 응답 메시지에 HTTP 헤더 설정 및 '최소화' Apigee Edge가 요청 앱에 반환하는 응답 메시지입니다.
관리 UI에서 이 흐름 구성을 열면 흐름 구성이 표시됩니다. 참조하세요.
프록시 엔드포인트 > 기본값 > 네비게이터의 PostFlow 창을 엽니다.
ProxyEndpoint의 해당 XML 구성: 'default' 표시됨 참조하세요.
<ProxyEndpoint name="default"> <PostFlow> <Response> <!-- Steps reference policies under /apiproxy/policies --> <!-- First, set a few HTTP headers with variables for this transaction. --> <Step><Name>setHeaders</Name></Step> <!-- Next, transform the response from XML to JSON for easier parsing with JavaScript --> <Step><Name>transform</Name></Step> <!-- Finally, use JavaScript to create minimized response with just city and state. --> <Step><Name>minimize</Name></Step> </Response> </PostFlow> <HTTPProxyConnection> <!-- BasePath defines the network address for this API proxy. See the script 'invoke.sh' to see how the complete URL for this API proxy is constructed.--> <BasePath>/javascript-cookbook</BasePath> <!-- Set VirtualHost to 'secure' to have this API proxy listen on HTTPS. --> <VirtualHost>default</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
다음은 흐름의 요소를 요약한 것입니다.
- <Request> - <Request> 요소는 여러 개의 <Step> 요소 각 단계에서 나머지 단계를 통해 생성한 정책 중 하나가 이 주제에서 볼 수 있습니다. 이러한 정책은 JavaScript를 API 프록시 흐름에 연결하며 정책 첨부 파일은 JavaScript 실행 시기를 결정합니다.
- <Response> - <Response> 요소에는
<Steps>. 이러한 단계에서는 최종 도착
대상의 응답을 반환합니다 (이 예시에서는 Apigee의 모의 서비스 타겟임).
/apiproxy/targets/default.xml
아래에 HTTPTargetConnection 설정) - <HTTPProxyConnection> - 에 대한 호스트 및 URI 경로를 지정합니다.
앱이 이 API를 사용하기 위해 호출하는 네트워크 주소를 정의합니다.
- <RouteRule> - 이 요소는 어떤 TargetEndpoint를 지정할지 지정합니다. ProxyEndpoint에 의해 호출됩니다.
프록시에 JavaScript 코드 추가
JavaScript (예: Python 스크립트, Java JAR 파일, XSLT 파일 등)는 리소스를 제공합니다. 자바스크립트 작업을 이제 막 시작했을 때 API 프록시의 JavaScript 파일입니다. 계속 진행함에 따라 JavaScript는 일반적이고 환경 또는 조직 수준에서 저장할 수 있습니다. 따라서 동일한 자바스크립트 파일을 여러 API 프록시에 저장할 필요가 없으며, 금세 관리가 불가능해질 수 있습니다
조직 및 환경 수준에서 리소스를 저장하는 방법에 관한 자세한 내용은 리소스 파일을 참고하세요.
사용해 보기
프록시 배포 및 호출에 대한 안내는 JavaScript 설명서 README.
가져오기 및 배포 API 프록시
변경 후 API 프록시 빌더에서 API 프록시를 저장할 수 있습니다. 관리 UI에서 찾을 수 있습니다.
또는 디렉터리에서 다음 명령어를 실행할 수 있습니다.
/api-platform-samples/doc-samples/javascript-cookbook
$ sh deploy.sh
JavaScript 테스트
디렉터리에서 다음 명령어를 실행합니다.
/api-platform-samples/doc-samples/javascript-cookbook
$ sh invoke.sh
curl 플래그 -v
는 셸 스크립트에서 응답의 HTTP 헤더를 보는 데 사용됩니다.
메시지를 반환합니다.
다음과 같이 직접 요청을 제출할 수 있습니다.
$ curl -v http://{org_name}-test.apigee.net/javascript-cookbook
JavaScript가 올바르게 실행되면 다음과 같은 응답이 표시됩니다.
< X-Apigee-Demo-Target: default < X-Apigee-Demo-ApiProxyName: simple-javascript < X-Apigee-Demo-ProxyName: default < X-Apigee-Demo-ProxyBasePath: /javascript-cookbook < X-Apigee-Demo-ProxyPathSuffix: /xml < X-Apigee-Demo-ProxyUrl: http://rrt331ea.us-ea.4.apigee.com/javascript-cookbook/xml {"city":"San Jose","state":"CA"}
이제 자바스크립트를 수정하여 새로운 작업을 시도하고, API 프록시를 다시 배포하고, 결과를 얻습니다. 항상 다음을 포함하는 API 프록시를 배포해야 합니다. 변경사항을 적용합니다.
스크립트 오류
JavaScript를 작성할 때는 불가피하게 오류가 표시됩니다. 자바스크립트 오류의 형식은 아래와 같이 API 프록시에서 발급한 것을 볼 수 있습니다.
{ "fault":{ "faultstring":"Execution of rewriteTargetUrl failed with error: Javascript runtime error: \"TypeError: Cannot find function getVariable in object TARGET_REQ_FLOW. (rewriteTargetUrl_js#1). at line 1 \"", "detail":{ "errorcode":"steps.javascript.ScriptExecutionFailed" } } }
JavaScript를 사용해야 하는 경우
Apigee Edge에서는 일반적으로 두 가지 이상의 방법으로 특정 기능을 구현할 수 있습니다. 사용 가능한 경우 즉시 사용 가능한 정책을 적용하고, 모든 API 프록시를 코딩하려는 유혹을 피할 수 있습니다. 사용할 수 있습니다. Apigee Edge는 컴파일된 JavaScript를 활용하여 자바스크립트가 정책만큼의 성능을 발휘할 가능성은 낮습니다. JavaScript는 유지 및 디버그하기가 더 어렵습니다. 내 웹사이트만의 고유한 기능을 사용할 수 있도록 요구사항을 충족해야 합니다
맞춤 기능의 성능이 우려된다면 가능하면 Java를 사용하세요.
요약
이 설명서 주제에서는 JavaScript를 API 프록시에 포함하는 방법을 알아봤습니다. 구성을 사용하여 맞춤 동작을 구현할 수 있습니다. 샘플로 구현된 맞춤 동작 변수를 가져오고 JSON을 파싱하고 커스텀 응답을 구성하는 방법을 보여줍니다. 메시지를 보낼 수 있습니다