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 bulunur. Ayrıca, bir tam sayı değişkeni ayarlamak için kolaylık sağlayan bir yöntemi de vardır.

Akış değişkenleri, API proxy akışının bağlamında bulunur. Bazı değişkenler Edge'e "yerleşiktir". Diğerleri politikalar yürütüldüğünde oluşturulur ve kendi değişkenlerinizi oluşturabilirsiniz. Akış değişkenleri genellikle verileri bir politikadan diğerine aktarmak ve koşullu akışlarda koşullar belirlemek için kullanılır. Akış değişkenleri hakkında bilgi edinmek için Akış değişkenleri ve koşullar başlıklı makaleyi inceleyin.

apigee-access modülü ve diğer özellikleri hakkında bilgi edinmek için Using the apigee-access module (apigee-access modülünü kullanma) başlıklı makaleyi inceleyin.

Ç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 bunu bir günlük dosyasına yazdırır. Ayrıca bu kod bir değişken ayarlar. Daha sonra bu değişkene bir politikadan erişebilirsiniz. Bu durumu aşağıda gösteriyoruz.

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. server.js dosyasını arayı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 bir AssignMessage 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 AssignMessage 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'sinin sayfasına gidin ve Geliştir görünümünü açın. Proxy'den gelen günlük çıkışını görüntülemek için Node.js Günlükleri'ni tıklayın. Proxy düzgün şekilde yapılandırılmışsa userId değişkeninin ayarlandığını görürsünüz. Ayrıca, terminal pencerenizdeki cURL çıkışında üstbilginin ayarlandığını da 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şkeni alır.

Parametreler:

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

İadeler:

Başka bir yerde sizin tarafınızdan oluşturulduğunda veya bir politika tarafından oluşturulduğunda setVariable() kullanılarak ayarlanan türe bağlı olarak bir dize ya da sayı. Hazır Edge değişkenlerinden birine erişiyorsanız türlerin listesini Değişkenler Referansı'nda 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);

Bir değişken ayarlar. Bazı değişkenler salt okunurdur ve bunlardan birini ayarlamaya çalışırsanız setVariable() yöntemi bir istisna oluşturur. 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: 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 tam sayıya zorlayan, ardından da ayarlayan bir kolaylık yöntemidir.

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ış bir değişkeni siler. Salt okunur bir değişkenin silinmesi hataya neden olur. Salt okunur değişkenlerin tam listesi için Değişken Referansı'na bakın.

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