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 menetapkan variabel bilangan bulat.

Variabel alur tersedia dalam konteks alur proxy API. Beberapa variabel merupakan "bawaan" di Edge. Atribut lainnya dibuat saat kebijakan dijalankan, 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 bersyarat. Untuk informasi tentang variabel alur, lihat Variabel dan kondisi flow.

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

Contoh yang berjalan

Bayangkan bahwa 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 gambarkan 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-nya, gunakan:

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

Setelah Anda men-deploy aplikasi ke Edge, tambahkan kebijakan ProvideMessage 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>

Berikutnya, lampirkan kebijakanAssignMessage lainnya ke preflow 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 {i>proxy<i} 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 telah disetel di 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(), kapan Anda membuatnya di tempat lain, atau saat kebijakan membuatnya. Jika sedang mengakses salah satu variabel Edge unik, Anda dapat menemukan daftar jenisnya 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-tama mengonversi parameter nilai ke bilangan bulat, lalu menetapkannya.

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 adalah sebuah kesalahan. Untuk mengetahui daftar lengkap variabel hanya baca, baca 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');