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