Node.js에서 흐름 변수에 액세스

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

소개

apigee-access 모듈을 사용하여 Apigee Edge 흐름에 액세스 변수를 사용할 수 있습니다. 모듈에는 변수를 가져오기, 설정, 삭제하는 메서드가 있습니다. 또한 정수 변수를 설정하는 편의 메서드도 있습니다.

흐름 변수는 API 프록시 흐름의 컨텍스트 내에 있습니다. 일부 변수는 '기본 제공'임 ~ Edge. 다른 변수는 정책이 실행될 때 생성되며 사용자가 직접 변수를 만들 수 있습니다. 생리혈 양 변수는 일반적으로 한 정책에서 다른 정책으로 데이터를 전달하고 조건을 설정하는 데 사용됩니다. 사용할 수 있습니다 흐름 변수에 대한 자세한 내용은 흐름 변수 및 조건을 따릅니다.

apigee-access 모듈 및 기타 기능에 관한 소개는 다음을 참고하세요. Apigee-access 모듈 사용

실제 예시

요청 흐름 경로에서 실행되는 Edge 정책이 AuthenticatedUserId 다음 코드는 이 변수에 액세스하여 log를 탭합니다. 또한 이 코드는 변수를 설정합니다. 그런 다음 정책에서 해당 변수에 액세스할 수 있습니다. 자세한 내용은 아래에 설명되어 있습니다.

var http = require('http');
var apigee = require('apigee-access');

http.createServer(function (request, response) {
  // The request parameter must be a request object that came from the http module
  var userId = apigee.getVariable(request, 'AuthenticatedUserId');
  apigee.setVariable(request, "custom.foo", "Bar");
  console.log('Authenticated Apigee User ID is %s', userId);
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello World\n');
}).listen(8124);

console.log('Server running at http://127.0.0.1:8124/');

이 코드를 JavaScript 파일에 복사하여 Edge에 배포한 후 사용해 볼 수 있습니다. 먼저 파일 server.js. 배포하려면 다음을 사용합니다.

apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
드림

애플리케이션을 Edge에 배포한 후 다음을 사용하여 AssignMessage 정책을 추가합니다. ProxyEndpoint 요청 흐름에 구성을 추가합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId">
    <DisplayName>AddUserId</DisplayName>
    <FaultRules/>
    <Properties/>  
    <AssignVariable>
        <Name>AuthenticatedUserId</Name>
        <Value>ntesla</Value>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

그런 다음 TargetEndpoint 응답 프리플로우에 다른AssignMessage 정책을 연결합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader">
    <DisplayName>SetHeader</DisplayName>
    <FaultRules/>
    <Properties/>
    <Set>
        <Headers>
            <Header name="MySpecialHeader">{custom.foo}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

다음과 같이 프록시를 호출할 수 있습니다.

curl -i http://myorg-test.apigee.net/access

이제 관리 UI에서 액세스 프록시 페이지로 이동하여 개발Node.js 로그를 클릭하여 로그 출력을 확인합니다. 액세스할 수 있습니다 프록시가 올바르게 구성되었다면 userId 변수가 설정된 것을 볼 수 있습니다. 터미널 창의 cURL 출력에 헤더가 설정된 것도 확인할 수 있습니다.

HTTP/1.1 200 OK

Content-Type: text/plain
Date: Tue, 27 05 2014 23:20:52 GMT
MySpecialHeader: Bar
Content-Length: 12
Connection: keep-alive

메서드


getVariable

var result = getVariable(httpRequest, name);

이름이 지정된 변수를 가져옵니다.

매개변수:

  • httpRequest: http 모듈에서 제공되는 요청 객체입니다.
  • name: (문자열) 검색할 변수의 이름입니다.

반환:

setVariable()을 사용하여 설정된 유형에 따른 문자열 또는 숫자입니다. 정책으로 생성되었을 때 다른 곳에서 생성되었을 수 있습니다 다음 중 하나에 액세스하는 경우 즉시 사용할 수 있는 Edge 변수의 경우 변수 참조에서 유형 목록을 확인할 수 있습니다. 변수 유형의 경우 자세한 내용은 특정 정책 참조 주제를 참조하세요.

예:

var apigee = require('apigee-access');
    // "httpRequest" must be a request object that came from the http module
    var val1 = apigee.getVariable(request, 'TestVariable');
    var val2 = apigee.getVariable(request, 'request.client.ip');

setVariable

setVariable(httpRequest, name, value);

변수를 설정합니다. 일부 변수는 읽기 전용이며, setVariable() 메서드는 예외가 발생할 수 있습니다. 어떤 변수가 읽기 전용인지 확인하려면 다음을 참조하세요. 변수 참조.

매개변수:

  • httpRequest: http 모듈에서 제공되는 요청 객체입니다.
  • name: (문자열) 검색할 변수의 이름입니다.
  • value: 숫자, 문자열, 부울, null 또는 정의되지 않음일 수 있습니다.

예:

var apigee = require('apigee-access');
    apigee.setVariable(request, 'TestVariable', 'bar');
    // This will throw an exception because client.ip is read-only.
    apigee.setVariable(request, 'client.ip');
    

setIntVariable

setIntVariable(httpRequest, name, value);

setIntVariable() 메서드는 먼저 value 매개변수를 정수로 나눈 다음 이 정수를 설정합니다.

매개변수:

  • httpRequest: http 모듈에서 제공되는 요청 객체입니다.
  • name: (문자열) 설정할 변수의 이름입니다.
  • value: 값 매개변수는 문자열 또는 숫자여야 합니다.

예:

var apigee = require('apigee-access');
// Convert "123" to an integer and set it
apigee.setIntVariable(request, 'TestVariable', '123');
// Use something that's already a number
apigee.setIntVariable(request, 'TestVariable2', 42);

deleteVariable

이름이 지정된 변수를 삭제합니다. 읽기 전용 변수를 삭제하면 오류가 발생합니다. 완벽한 읽기 전용 변수 목록은 변수 참조를 확인하세요.

deleteVariable(httpRequest, name);

매개변수:

  • httpRequest: http 모듈에서 제공되는 요청 객체입니다.
  • name: (문자열) 삭제할 변수의 이름입니다.

예:

  apigee.deleteVariable(request, 'TestVariable');
    // This will throw an exception because client.ip is a read-only variable.
    apigee.deleteVariable(request, 'client.ip');