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

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

Giriş

Bir 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 tam sayı değişkeni ayarlamak için kolay bir yöntemi de vardır.

Akış değişkenleri, API proxy akışı 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şul 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 apigee-access modülünü kullanma başlıklı makaleyi inceleyin.

Çalışma örneği

İstek akışı yolunda çalışan bir Edge politikasının AuthenticatedUserId adlı bir değişkeni ayarladığını varsayalım. Aşağıdaki kod bu değişkene erişir ve bir günlüke yazdırır. Ayrıca bu kod bir değişken ayarlar. Ardından, aşağıda gösterildiği gibi bir politikadan bu değişkene 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 kopyalayıp 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ı 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ı.

İadeler:

setVariable() kullanılarak ayarlanan türe, başka bir yerde sizin tarafınızdan oluşturulduğunda veya bir politika tarafından oluşturulduğunda bağlı olarak bir dize veya 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ı'nı inceleyin.

Parametreler:

  • httpRequest: http modülünden gelen istek nesnesi.
  • name: (Dize) Alınacak değişkenin adı.
  • value: Sayı, dize, boole, null veya undefined 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ı olarak zorunlu kılan ve daha sonra 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şkeni silmek hatalıdır. Salt okunur değişkenlerin tam listesi için Değişkenler Referansı başlıklı makaleyi 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');