Node.js'de akış değişkenlerine erişme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Giriş

Node.js uygulamasında Apigee Edge akış değişkenlerine erişmek için apigee-access modülünü kullanın. Modülde değişkenleri alma, ayarlama ve silme yöntemleri vardır. Ayrıca, tam sayı değişkeni ayarlamak için de kullanışlı bir yöntem vardır.

Akış değişkenleri, bir API proxy akışı bağlamında bulunur. Bazı değişkenler Edge'de "yerleşiktir". Bazıları ise politikalar yürütüldüğünde oluşturulur ve kendi değişkenlerinizi oluşturabilirsiniz. Akış değişkenleri genellikle bir politikadan diğerine veri aktarmak ve koşullu akışlarda koşul belirlemek için kullanılır. Akış değişkenleri hakkında bilgi için Akış değişkenleri ve koşulları bölümünü inceleyin.

apigee-access modülü ve diğer özellikleriyle ilgili tanıtım için Apigee-access modülünü kullanma konusuna bakın.

Çalışan örnek

İstek akış yolunda çalışan bir Edge politikasının AuthenticatedUserId adlı bir değişken ayarladığını düşünün. Aşağıdaki kod bu değişkene erişir ve değişkeni bir günlüğe yazdırır. Ayrıca, bu kod bir değişken ayarlar. Ardından, bu değişkene aşağıda açıkladığımız bir politikadan erişebilirsiniz.

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/');

Bu kodu bir JavaScript dosyasına kopyalayabilir, Edge'e dağıtabilir ve deneyebilirsiniz. Dosyayı server.js çağırın. Dağıtmak için şunu kullanın:

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

Uygulamayı Edge'e dağıttıktan sonra ProxyEndpoint istek akışına aşağıdaki yapılandırmaya sahip birassignMessage politikası ekleyin:

<?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>

Ardından, TargetEndpoint yanıtı ön akışına başka bir AtaticMessage politikası ekleyin:

<?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>

Proxy'yi şu şekilde çağırabilirsiniz:

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

Şimdi yönetim kullanıcı arayüzünde erişim proxy'si sayfasına gidin ve Geliştirme görünümünü açın. Proxy'den günlük çıkışını görüntülemek için Node.js Günlükleri'ni tıklayın. Proxy düzgün bir şekilde yapılandırılmışsa userId değişkeninin ayarlandığını görürsünüz. Terminal pencerenizdeki cURL çıkışında da başlığın ayarlandığını görürsünüz:

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

Yöntemler


getVariable

var result = getVariable(httpRequest, name);

Adlandırılmış bir değişken alır.

Parametreler:

  • httpRequest: http modülünden gelen istek nesnesi.
  • name: (Dize) Alınacak değişkenin adı.

İade et:

setVariable() kullanılarak ayarlanan türe, başka bir yerde sizin tarafınızdan veya bir politika tarafından oluşturulduğu zamana bağlı olarak bir dize veya sayı. Kullanıma hazır Edge değişkenlerinden birine erişiyorsanız türlerin listesini Değişkenler Referansı bölümünde bulabilirsiniz. Politikalar tarafından oluşturulan değişken türleri için ilgili politika referansı konusuna bakın.

Örnekler:

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);

Değişken ayarlar. Bazı değişkenler salt okunurdur ve bunlardan birini ayarlamaya çalışırsanız setVariable() yöntemi bir istisna atar. Hangi değişkenlerin salt okunur olduğunu belirlemek için Değişkenler Referansı'na bakın.

Parametreler:

  • httpRequest: http modülünden gelen istek nesnesi.
  • name: (Dize) Alınacak değişkenin adı.
  • value: Bir sayı, Dize, boole, null veya tanımsız olabilir.

Örnek:

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() yöntemi, önce değer parametresini bir tam sayıya dönüştüren ve ardından ayarlayan kullanışlı bir yöntemdir.

Parametreler:

  • httpRequest: http modülünden gelen istek nesnesi.
  • name: (Dize) Ayarlanacak değişkenin adı.
  • value: Değer parametresi bir dize veya sayı olmalıdır.

Örnek:

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

Adlandırılmış değişkeni siler. Salt okunur bir değişkenin silinmesi hatadır. Salt okunur değişkenlerin tam listesi için Değişkenler Referansı'nı inceleyin.

deleteVariable(httpRequest, name);

Parametreler:

  • httpRequest: http modülünden gelen istek nesnesi.
  • name: (Dize) Silinecek değişkenin adı.

Örnek:

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