Mengakses variabel flow di Node.js

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

Pengantar

Gunakan modul apigee-access untuk mengakses alur Apigee Edge variabel dalam aplikasi Node.js. Modul ini memiliki metode untuk mendapatkan, menetapkan, dan menghapus variabel. Kode ini juga memiliki metode praktis untuk menetapkan variabel bilangan bulat.

Variabel flow tersedia dalam konteks alur proxy API. Beberapa variabel bersifat "bawaan" dapat Edge. Atribut lainnya dibuat saat kebijakan dijalankan, dan Anda dapat membuat variabel sendiri. Alur variabel biasanya digunakan untuk meneruskan data dari satu kebijakan ke kebijakan lainnya dan untuk menetapkan kondisi dalam alur bersyarat. Untuk informasi tentang variabel alur, lihat Variabel alur dan kondisi.

Untuk pengantar modul apigee-access dan fitur lainnya, lihat Menggunakan modul akses apigee.

Contoh yang berfungsi

Bayangkan kebijakan Edge yang berjalan di jalur alur permintaan menetapkan variabel yang disebut AuthenticatedUserId. Kode berikut mengakses variabel tersebut dan mencetaknya ke log. Selain itu, kode ini menetapkan variabel. Anda kemudian dapat mengakses variabel dari kebijakan, yang kami ilustrasikan di bawah ini.

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

Anda dapat menyalin kode ini ke dalam file JavaScript, men-deploy-nya ke Edge, dan mencobanya. Panggil file server.js. Untuk men-deploy, gunakan:

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

Setelah men-deploy aplikasi ke Edge, tambahkan kebijakan MenetapkanMessage dengan hal berikut ke alur permintaan 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>

Selanjutnya, lampirkan kebijakan PrepareMessage lainnya ke pra-alur respons TargetEndpoint:

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

Anda dapat memanggil proxy seperti ini:

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

Sekarang, buka halaman proxy akses di UI pengelolaan, lalu tampilkan Develop. Klik Log Node.js untuk melihat output log dari {i>proxy<i}. Jika proxy dikonfigurasi dengan benar, Anda akan melihat bahwa variabel userId telah ditetapkan. Anda juga akan melihat header yang telah disetel dalam output cURL di jendela terminal:

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

Metode


getVariable

var result = getVariable(httpRequest, name);

Mendapatkan variabel bernama.

Parameter:

  • httpRequest: Objek permintaan yang berasal dari modul http.
  • name: (String) Nama variabel yang akan diambil.

Hasil:

Sebuah {i>string<i} atau angka, tergantung pada jenis yang diatur menggunakan {i>setVariable()<i}, yang dibuat oleh Anda di tempat lain, atau ketika kebijakan membuatnya. Jika Anda mengakses salah satu variabel Edge siap pakai, Anda dapat menemukan daftar jenis di Referensi Variabel. Untuk jenis variabel yang dibuat oleh kebijakan, lihat topik referensi kebijakan tertentu.

Contoh:

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

Menetapkan variabel. Beberapa variabel bersifat hanya-baca, dan metode setVariable() memunculkan pengecualian jika Anda mencoba menetapkan salah satunya. Untuk menentukan variabel mana yang bersifat hanya baca, lihat Variabel Referensi.

Parameter:

  • httpRequest: Objek permintaan yang berasal dari modul http.
  • name: (String) Nama variabel yang akan diambil.
  • value: Dapat berupa angka, String, boolean, null, atau belum ditentukan.

Contoh:

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, nama, nilai);

Metode setIntVariable() adalah metode praktis yang terlebih dahulu memaksa parameter nilai untuk bilangan bulat, dan kemudian menyetelnya.

Parameter:

  • httpRequest: Objek permintaan yang berasal dari modul http.
  • name: (String) Nama variabel yang akan ditetapkan.
  • value: Parameter nilai harus berupa string atau angka.

Contoh:

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

Menghapus variabel bernama. Menghapus variabel hanya-baca merupakan suatu error. Untuk daftar variabel hanya baca, lihat Referensi Variabel.

deleteVariable(httpRequest, name);

Parameter:

  • httpRequest: Objek permintaan yang berasal dari modul http.
  • name: (String) Nama variabel yang akan dihapus.

Contoh:

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