Mengakses variabel flow di Node.js

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

Pengantar

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

Variabel alur ada dalam konteks alur proxy API. Beberapa variabel bersifat "bawaan" pada Edge. Variabel lainnya dibuat saat kebijakan dieksekusi, dan Anda dapat membuat variabel Anda sendiri. Variabel alur biasanya digunakan untuk meneruskan data dari satu kebijakan ke kebijakan lainnya dan untuk menetapkan kondisi dalam alur kondisional. Untuk informasi tentang variabel alur, lihat Variabel dan kondisi alur.

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

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. Kemudian, Anda dapat mengakses variabel tersebut dari kebijakan, yang kami ilustrasikan di bawah.

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-deploynya, 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 DefineMessage dengan konfigurasi 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 AssignMessage lain 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 dan munculkan tampilan Develop. Klik Node.js Logs untuk melihat output log dari proxy. 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:

String atau angka, bergantung pada jenis yang ditetapkan menggunakan setVariable(), saat dibuat oleh Anda di tempat lain, atau saat kebijakan membuatnya. Jika mengakses salah satu variabel Edge bawaan, 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() akan menampilkan pengecualian jika Anda mencoba menetapkan salah satunya. Untuk menentukan variabel mana yang bersifat hanya baca, lihat Referensi Variabel.

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 pertama kali memaksa parameter nilai menjadi bilangan bulat, lalu menetapkannya.

Parameter:

  • httpRequest: Objek permintaan yang berasal dari modul http.
  • name: (String) Nama variabel yang akan ditetapkan.
  • value: Parameter value 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. Penghapusan variabel hanya baca akan menyebabkan error. Untuk daftar lengkap 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');