Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Giriş
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, bir tam sayı değişkeni ayarlamak için kolaylık sağlayan bir yöntemi de vardır.
Akış değişkenleri, API proxy akışının 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şullar 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 Using the apigee-access module (apigee-access modülünü kullanma) başlıklı makaleyi inceleyin.
Çalışan örnek
İstek akışı yolunda çalışan bir Edge politikasının AuthenticatedUserId adlı bir değişken ayarladığını düşünün. Aşağıdaki kod, bu değişkene erişir ve bunu bir günlük dosyasına yazdırır. Ayrıca bu kod bir değişken ayarlar. Daha sonra bu değişkene bir politikadan erişebilirsiniz. Bu durumu aşağıda gösteriyoruz.
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 kopyalayabilir, 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ı da 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şkeni alır.
Parametreler:
httpRequest: http modülünden gelen istek nesnesi.name: (Dize) Alınacak değişkenin adı.
İadeler:
Başka bir yerde sizin tarafınızdan oluşturulduğunda veya bir politika tarafından oluşturulduğunda setVariable() kullanılarak ayarlanan türe bağlı olarak bir dize ya da 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ı'na bakın.
Parametreler:
httpRequest: http modülünden gelen istek nesnesi.name: (Dize) Alınacak değişkenin adı.value: Sayı, dize, boole, null veya tanımsız 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 tam sayıya zorlayan, ardından da 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şkenin silinmesi hataya neden olur. Salt okunur değişkenlerin tam listesi için Değişken Referansı'na bakın.
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');