Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Bu başlıkta Apigee Edge JavaScript Nesne Modeli ele alınmaktadır. Etkili iletişim sürecinin API'ye özel JavaScript eklemek için JavaScript politikasını kullanmayı planlıyorsanız bu model temsil eder.
Edge JavaScript nesne modeli hakkında
Apigee Edge JavaScript nesne modeli, mobil cihazlar için tasarlanan yalnızca Apigee Edge proxy akışında çalışan JavaScript kodunda kullanılabilir. JavaScript'i kullanıyorsunuz. politikasını uygulayın.
Bu model tarafından tanımlanan nesnelerin API proxy akışı içinde kapsamı vardır, yani belirli nesne ve özelliklerin yalnızca akışın belirli noktalarında kullanılabildiğinden emin olun. JavaScript yürütülür, yürütme için bir kapsam oluşturulur. Bu kapsamda, nesne başvuruları oluşturulur:
- context: İleti bağlamına erişim sağlayan bir nesne
- request: İstek nesnesine erişim sağlayan bir kısaltılmış öğe
- response: İstek nesnesine erişime olanak tanıyan bir kısayol
- crypto: Çeşitli karma işlevleri sağlar
- print: Çıkış yayan bir işlev
- özellikler: Politikadaki yapılandırma özelliklerine okuma erişimi sağlar
Bağlam nesnesi
context
nesnesi global kapsama sahip. API'nin her yerinde kullanılabilir
akış şeklinde ifade edilir. Dört alt nesnesi var: proxyRequest
, proxyResponse
,
targetRequest
, targetResponse
. Bu alt nesnelerin kapsamı
ortam isteği ve yanıtı, proxy isteği ve yanıtı veya hedef istek ve
tıklayın. Örneğin, JavaScript politikası akışın proxy uç noktası bölümünde yürütülüyorsa
context.proxyRequest
ve context.proxyResponse
nesneleri
kapsam. JavaScript bir hedef akışta çalışıyorsa context.targetRequest
ve
context.targetResponse
nesne kapsam dahilinde.
context
nesnesi, ayrıntılı olarak açıklanan özelliklere ve yöntemlere de sahiptir
daha fazla bilgi edineceksiniz. Örneğin, aşağıdaki JavaScript kodu örneğinde
context.flow
özelliğini kullanır ve şurada get/setVariable()
yöntemlerini çağırır:
context
.
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("USER.name", username); }
Bu yöntemler akış değişkenleri ile doğrudan etkileşimde bulunur.
context.flow
özelliğinin değeri, geçerli akış kapsamıdır. Proxy'de
istek akışı, sabit PROXY_REQ_FLOW
olarak ayarlanır. Hedefteyse
yanıt akışı, TARGET_RESP_FLOW
olarak ayarlandı. Bu sabit değer,
özel kodu yürütmeniz gerekir. Alıcı, akış değişkenleri almanızı sağlar. Ayarlayıcı, akış değişkenlerini
akış değişkenlerini de hesaba katmanız gerekir. Bu değişkenler genellikle proxy akışında kullanılır ve
diğer politikalar.
Daha fazla ayrıntı için aşağıdaki içerik nesnesi referansı bölümüne bakın ve örnekler.
Şifreleme nesnesi
Şifreleme nesnesi, JavaScript Nesnesi'ne temel, yüksek performanslı kriptografik destek ekler Model. Daha fazla ayrıntı ve örnek için aşağıdaki kripto nesnesi referansı bölümüne bakın.
İstek ve yanıt nesneler
request
ve response
nesneleri kısa için
ortam isteği ve yanıtı, proxy isteği ve yanıtı veya hedef istek ve
tıklayın. Bu değişkenlerin atıfta bulunduğu nesneler, JavaScript
politikası yürütür. JavaScript bir proxy uç noktası akışında çalışıyorsa istek ve
yanıt değişkenleri context.proxyRequest
ve
context.proxyResponse
. JavaScript bir hedef akışta çalışıyorsa değişkenler
context.targetRequest
ve context.targetResponse
bölümlerine bakın.
Print() işlevi
JavaScript nesne modeli, hata ayıklama çıktısı almak için kullanabileceğiniz bir print()
işlevi içerir
uç izleme aracına gönderebilirsiniz. JavaScript yazdırma() ile hata ayıklama bölümüne bakın.
özetleri.
Özellikler nesnesi
Politika yapılandırmasında bir properties
değişkeni
Örneğin, JavaScript yapılandırmanız şunları içeriyorsa:
<Javascript name='JS-1' > <Properties> <Property name="number">8675309</Property> <Property name="firstname">Jenny</Property> </Properties> <ResourceURL>jsc://my-code.js</ResourceURL> </Javascript>
Ardından my-code.js
bölümünde:
print(properties.firstname); // prints Jenny print(properties.number); // 8675309
Daha pratik bir şekilde, yapılandırma, kodun farklı şekilde davranmasına izin verebilir. farklı ortamlarda, farklı anlarda veya belirli bir zamanda çalıştırıldığında bir neden sunmalısınız.
Örneğin, aşağıda "değişken adı" belirtilmektedir ve içerik üreticinin çıkış:
<Javascript name='JS-2' > <Properties> <Property name="output">my_output_variable</Property> <Property name="prettyPrint">true</Property> </Properties> <ResourceURL>jsc://emit-results.js</ResourceURL> </Javascript>. Daha sonra
emit-results.js
ürününde kod şu işlemi yapabilir:
var result = { prop1: "something", prop2 : "something else" } ; if (properties.prettyPrint == "true") { context.setVariable(properties.output, JSON.stringify(result, null, 2)); } else { context.setVariable(properties.output, JSON.stringify(result)); }
kripto nesnesi referansı
Şifreleme nesnesi, temel kriptografik karma oluşturma işlevlerini JavaScript'te gerçekleştirmenizi sağlar.
Şifreleme nesnesi global kapsama sahip. API proxy akışının içinde her yerde kullanılabilir. Şifreleme, şu karma nesneleriyle çalışmanıza olanak tanır:
- SHA-1
- SHA256
- SHA512
- MD5
SHA-1 nesneleriyle çalışma
SHA-1 nesneleri oluşturabilir, bunları güncelleyebilir ve onaltılık ve base64 değerlerine dönüştürebilirsiniz.
Yeni bir SHA-1 nesnesi oluşturma
var _sha1 = crypto.getSHA1();
SHA-1 nesnesini güncelleme
Söz dizimi
_sha1.update(value);
Parametreler
- değer - (Dize) Herhangi bir dize değeri.
Örnek
Bir SHA-1 nesnesini güncelleyin:
_sha1.update("salt_value"); _sha1.update("some text");
SHA-1 nesnesini onaltılık dize olarak döndürme
var _hashed_token = _sha1.digest();
SHA-1 nesnesini base64 dizesi olarak döndürür
var _hashed_token = _sha1.digest64();
SHA-256 nesneleriyle çalışma
SHA-256 nesneleri oluşturabilir, bunları güncelleyebilir ve onaltılık ve base64 değerlerine dönüştürebilirsiniz.
Yeni bir SHA-256 nesnesi oluşturma
var _sha256 = crypto.getSHA256();
SHA-256 nesnesini güncelleme
Söz dizimi
_sha256.update(value);
Parametreler
- değer - (Dize) Herhangi bir dize değeri.
Örnek
SHA-256 nesnesini güncelleyin:
_sha256.update("salt_value"); _sha256.update("some text");
SHA-256 nesnesini onaltılık dize olarak döndürme
var _hashed_token = _sha256.digest();
SHA-256 nesnesini base64 dizesi olarak döndürme
var _hashed_token = _sha256.digest64();
SHA-512 nesneleriyle çalışma
SHA-512 nesneleri oluşturabilir, bunları güncelleyebilir ve onaltılık ve base64 değerlerine dönüştürebilirsiniz.
Yeni bir SHA-512 nesnesi oluşturma
var _sha512 = crypto.getSHA512();
SHA-512 nesnesini güncelleme
Söz dizimi
_sha512.update(value);
Parametreler
- değer - (Dize) Herhangi bir dize değeri.
Örnek
SHA-512 nesnesini güncelleyin:
_sha512.update("salt_value"); _sha512.update("some text");
SHA-512 nesnesini onaltılık dize olarak döndürme
var _hashed_token = _sha512.digest();
SHA-512 nesnesini base64 dizesi olarak döndürür
var _hashed_token = _sha512.digest64();
MD5 nesneleriyle çalışma
MD5 nesneleri oluşturabilir, bunları güncelleyebilir ve onaltılık ve base64 değerlerine dönüştürebilirsiniz.
Yeni bir MD5 nesnesi oluşturma
var _md5 = crypto.getMD5();
MD5 nesnesini güncelleme
Söz dizimi
_md5.update(value);
Parametreler
- değer - (Dize) Herhangi bir dize değeri.
Örnek
Bir MD5 nesnesini güncelleme:
_md5.update("salt_value"); _md5.update("some text");
MD5 nesnesini onaltılık dize olarak döndürme
var _hashed_token = _md5.digest();
MD5 nesnesini base64 dizesi olarak döndürme
var _hashed_token = _md5.digest64();
Kripto tarih/saat desteği
Şifreleme nesnesi, tarih/saat biçimlendirme kalıplarını destekler.
crypto.dateFormat()
Dize biçiminde bir tarih döndürür.
Söz dizimi
crypto.dateFormat(format, [timezone], [time])
Parametreler
- format - (Dize) Bu parametrenin temel uygulaması biçim: java.text.SimpleDateFormat. Örneğin: 'yyyy-AA-GG SS:dd:ss.SSS'
- timezone - (Dize, isteğe bağlı) Bunun temel uygulaması parametresi java.util.TimeZone'dur. Bu parametre aynıDefault: UTC
- time - (Sayı, isteğe bağlı) Biçimlendirilecek Unix zaman damgası değeri. Varsayılan: şu anki saat
Örnekler
Milisaniye cinsinden geçerli zamanı öğrenin:
var _now = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS');
Pasifik Saat Dilimi'nin geçerli saatini öğrenin:
var _pst = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS','PST');
Şu andan itibaren on saniyenin değerini bulun:
var _timeNow = Number(context.getVariable('system.timestamp')); var ten_seconds = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS','PST', _timeNow + 10 * 1000);
Diğer örnekler. Ayrıca java.text.SimpleDateFormat dokümanlarına bakın.
var _pst = crypto.dateFormat('M');
var _pst = crypto.dateFormat('EEE, d MMM yyyy HH:mm:ss Z');
var _pst = crypto.dateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Aşağıdakileri almak için getHash() işlevini kullanın: desteklenen karma nesnelerinden herhangi biri
Örnekler
var _hash1 = crypto.getHash('MD5'); var _hash2 = crypto.getHash('SHA-1'); var _hash3 = crypto.getHash('SHA-256'); var _hash4 = crypto.getHash('SHA-512');
Kriptolu örnek
try { // get values to use with hash functions var salt = context.getVariable("salt") || 'SomeHardCodedSalt'; var host = context.getVariable("request.header.Host"); var unhashed_token = ""; var _timeNow = Number(context.getVariable('system.timestamp')); var now = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS','PST', _timeNow); unhashed_token = "|" + now + "|" + host // generate a hash with the unhashedToken: var sha512 = crypto.getSHA512(); sha512.update(salt); sha512.update(unhashed_token); // convert to base64 var base64_token = sha512.digest64(); // set headers context.setVariable("request.header.now", now); context.setVariable("request.header.token", base64_token); } catch(e) { throw 'Error in Javascript'; }
bağlam nesnesi referans
Bir context
nesnesi tarafından oluşturulan her istek/yanıt işlemi için
API proxy'si. context
nesnesi, değişkenleri alma, ayarlama ve kaldırma yöntemlerini gösterir
her işlemle ilişkilidir.
Değişkenler bir işleme özel mülkleri tanımlar. Günün saati,
istekte bulunan istemcinin kullanıcı aracısı ve hedef hizmetin URL'si,
context
içinde kullanılabilen tüm değişken örnekleri. Dolayısıyla,
context
, yürütülmesi için bu özelliklere dayanan mantık oluşturmak açısından faydalıdır
sağlayabilir.
Akış değişkenleri referansı ve Değişkenleri Ayıklayın politikası hakkında daha fazla bilgi edinin.
bağlam nesne özeti
Bu tabloda bağlam nesnesi ve alt öğeleri kısaca açıklanmakta ve özellikler listelenmektedir her biri için geçerli.
Ad | Açıklama | Özellikler |
---|---|---|
context |
Mesaj işleme ardışık düzeni bağlamı ile istek ve yanıt için bir sarmalayıcı ProxyEndpoint ve TargetEndpoint tarafından yürütülen akışlar. | akış, oturum |
context. proxyRequest |
ProxyEndpoint'e gelen istek mesajını temsil eden bir nesne ( API proxy'sine uygulama isteğinde bulunanlar) | başlıklar, sorgu parametreleri, yöntem, gövde, url |
context. targetRequest |
TargetEndpoint (hedef uç noktası) kaynaklı giden istek mesajını temsil eden nesne arka uç hizmetine API proxy'si ekleyin). | başlıklar, sorgu parametreleri, yöntem, gövde, url |
context. targetResponse |
Gelen hedef yanıt mesajını temsil eden nesne (arka uç hizmetinden bağlama) | başlıklar, içerik, durum |
context. proxyResponse |
Giden proxy yanıt mesajını temsil eden bir nesne (API proxy'sinden istekte bulunan uygulama) | başlıklar, içerik, durum |
context.flow |
Geçerli akışın adı. | Aşağıdaki context.flow'a bakın. |
context.session |
İki farklı adım arasında nesne aktarmak için kullanabileceğiniz ad/değer çiftleri haritası
aynı bağlamda yürütüldüğünden
emin olmalısınız. Örnek: context.session['key'] = 123 . |
Bu nesnenin ne zaman ve ne zaman kullanılacağıyla ilgili daha fazla bilgi için şuraya bakın: Apigee Topluluğu tartışması. |
bağlam nesne yöntemleri
context.getVariable()
Önceden tanımlanmış veya özelleştirilebilen bir değişkenin değerini alır.
Söz dizimi
context.getVariable("variable-name");
Örnek
Mevcut yılın değerini öğrenmek için:
var year = context.getVariable('system.time.year');
context.setVariable()
Özelleştirilebilen değişkenin veya yazılabilir önceden tanımlanmış değişkenlerin değerini ayarlar.
Söz dizimi
context.setVariable("variable-name", value);
Örnek
Değişken ayarlamak için yaygın bir senaryo, bir API proxy'sinin
hedef URL'dir. Aşağıdaki JavaScript, USER.name
adlı bir değişkenin değerini alır.
bu değeri URL'ye bir sorgu parametresi olarak ekler
http://mocktarget.apigee.net?user=
ve ardından önceden tanımlanmış
target.url
ekleyebilirsiniz.
context.setVariable("target.url", "http://mocktarget.apigee.net/user?user="+context.getVariable("USER.name"));.
context.removeVariable()
Bir değişkeni bağlamdan kaldırır.
Söz dizimi
context.removeVariable('variable-name');
bağlam nesnesi özellikleri
flow
özelliği, geçerli API proxy akışını tanımlayan bir dizedir. Bu
özelliği, JavaScript'in eklendiği Akışı belirtmek için kullanılır. Desteklenen değerler
şunlardır:
PROXY_REQ_FLOW
PROXY_RESP_FLOW
TARGET_REQ_FLOW
TARGET_RESP_FLOW
Her Akış adı, ProxyEndpoints veya TargetEndpoints.
İsteğe bağlı bu özellik, ortak JavaScript'in birden fazla Akışta yürütüldüğü durumlarda yararlıdır. ancak yürütüldüğü Akışa bağlı olarak davranışı değişiklik gösterebilir. Akış özelliğini kullanma birden çok API proxy'sinde yeniden kullanılması amaçlanan JavaScript modülleri için mantığı yürütmeden önce mevcut Akışı kontrol etmek için gereklidir.
Örnek
Yalnızca targetRequest Akışında bir HTTP üstbilgisi ayarlayın:
if (context.flow=="TARGET_REQ_FLOW") { context.targetRequest.headers['TARGET-HEADER-X']='foo'; }
İçeriği yalnızca proxyResponse Akışında ayarla:
if (context.flow=="PROXY_RESP_FLOW") { context.proxyResponse.content='bar'; }
Yürütülen iki politika arasında nesne aktarmak için kullanılabilecek ad/değer çiftlerinin bir haritası ekleyebileceğiniz anlamına gelir.
Örnek
Oturumda bir değer belirleyin:
context.session['key'] = 123;
Oturumdan elde edilen değeri alın:
var value = context.session['key']; // 123.
içerik nesnesi alt öğeleri
Aşağıda gösterildiği gibi, eksiksiz bir API proxy akışı her biri bağlam nesnesinin alt öğesi olan ilişkili bir mesaj nesnesi:
context.proxyRequest
: İstekte bulunan gelen istek mesajı. gerekir.context.targetRequest
: Arka uca gönderilen giden istek mesajı geliştirmenizi sağlar.context.proxyResponse
: belirten bir e-posta alırsınız.context.targetResponse
: Arka uçtan alınan gelen istek mesajı geliştirmenizi sağlar.
Aşağıdaki bölümlerde bu nesnelerin yöntemleri ve özellikleri açıklanmaktadır:
bağlam.*Alt nesneleri isteyin.
API proxy'sinde yürütülen her bir HTTP işlemi için iki istek mesajı nesnesi oluşturuldu: bir gelen (istemciden gelen istek) ve bir giden ( API proxy'si ile arka uç hedefine gönderilir.)
context
nesnesi, şu istek mesajlarını temsil eden alt nesneler içeriyor:
context.proxyRequest
ve context.targetRequest
. Bu nesneler sayesinde
JavaScript kodunuz olduğunda kapsam dahilindeki istek akışındaki mülklere
yürütülür.
Not: Erişim için kısayol nesnesini request
de kullanabilirsiniz.
istek akışında bu özellikleri kullanabilirsiniz. request
nesnesi,
Bulunduğu yere bağlı olarak context.proxyRequest
veya context.targetRequest
JavaScript kodunuzun yürütüldüğü akış.
bağlam.*Alt nesne özelliklerini iste
Mülk adı | Açıklama |
---|---|
url |
İsteğin tam URL'si aşağıdaki özelliklerden oluşur:
|
Örnekler: context.targetRequest.url = 'http://www.example.com/path?q1=1' context.targetRequest.protocol ='https'; |
|
headers |
|
Örnekler: Bu HTTP isteği için: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5ZŞu JavaScript: context.proxyRequest.headers['Content-Type']; context.proxyRequest.headers['Authorization']; şu değerleri döndürür: application/json Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z |
|
queryParams |
|
Örnekler: "?city=PaloAlto&city=NewYork" şu şekillerde erişilebilir: context.proxyRequest.queryParams['city']; // == 'PaloAlto' context.proxyRequest.queryParams['city'][0] // == 'PaloAlto' context.proxyRequest.queryParams['city'][1]; // == 'NewYork' context.proxyRequest.queryParams['city'].length(); // == 2 |
|
method |
HTTP fiili ( |
Örnekler: Bu istek için: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z Aşağıdaki JavaScript: context.proxyRequest.method; şu değeri döndürür: POST |
|
body |
HTTP isteğinin ileti gövdesi (yük). İsteğin gövdesinde aşağıdaki üyeler bulunur:
|
Örnekler: XML gövdesi için: <customer number='1'> <name>Fred<name/> <customer/> XML nesnesinin öğelerine aşağıdaki şekilde erişmek için: var name = context.targetRequest.body.asXML.name; XML özellikleri özelliklerine erişmek için var number = context.targetRequest.body.asXML.@number; Bir JSON istek gövdesi için: { "a": 1 , "b" : "2" } var a = context.proxyRequest.body.asJSON.a; // == 1 var b = context.proxyRequest.body.asJSON.b; // == 2 Form parametrelerini okumak için: "vehicle=Car&vehicle=Truck" v0 = context.proxyRequest.body.asForm['vehicle'][0]; v1 = context.proxyRequest.body.asForm['vehicle'][1]; |
context.*Alt nesneleri yanıtlayın
API proxy'sinde yürütülen her bir HTTP işlemi için iki yanıt mesajı nesnesi oluşturuldu: bir gelen (arka uç hizmetinden gelen yanıt) ve bir giden (yanıt) geri gönderilir.)
Bağlam nesnesinde, şu yanıt mesajlarını temsil eden alt nesneler var:
context.proxyResponse
ve context.targetResponse
. Bu nesneler sayesinde
JavaScript kodunuz şu anda kapsam dahilinde olan yanıt akışındaki
yürütülür.
Not: Erişim için kısayol nesnesini response
de kullanabilirsiniz.
yanıt akışından
alırsınız. response
nesnesi,
Bulunduğu yere bağlı olarak context.proxyResponse
veya context.targetResponse
JavaScript kodunuzun yürütüldüğü akış.
bağlam.*Yanıt nesnesi özellikleri
Mülk adı | Açıklama |
---|---|
headers |
|
Örnek: var cookie = context.targetResponse.headers['Set-Cookie']; |
|
status |
Özellik olarak durum mesajı içeren durum kodu. Hem durum kodu hem de durum mesajı kullanılabilir. |
Örnek: var status = context.targetResponse.status.code; // 200 var msg = context.targetResponse.status.message; // "OK" |
|
content |
Yanıt mesajının HTTP gövdesi (yük içeriği). Yanıt içeriğinde aşağıdaki üyeler bulunur: context.targetResponse.content.asXML; context.targetResponse.content.asJSON; |
.asXML gösterimini kullanma
.asXML
gösterimini kullanarak XML dokümanlarında gezinmek için pratik bir yöntem vardır.
Bu bölümde, bu gösterimin nasıl kullanılacağı ve
request.content
ve context.proxyRequest.content
.
Örneğin:
request.content.asXML
veya
context.proxyRequest.content.asXML
Bir dizede hem *.content
hem de *.content.asXML
formları kullanılabilir
irdelemesine olanak tanır. JavaScript ise bunları dizeye dönüştürür. Önceki durumda
(*.content
) ayarlanırsa dize, tüm bildirimlerin yanı sıra XML yorumları da içerir.
*.content.asXML
durumunda ise sonucun dize değeri temizlenir.
beyanlar ve yorumlar.
Örnek
msg.content:
<?xml version="1.0" encoding="UTF-8"?> <yahoo:error xmlns:yahoo="http://yahooapis.com/v1/base.rng" xml:lang="en-US"> <yahoo:description>Please provide valid credentials. OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com" </yahoo:description> </yahoo:error> <!-- mg023.mail.gq1.yahoo.com uncompressed/chunked Sat Dec 14 01:23:35 UTC 2013 -->
msg.content.asXML:
<?xml version="1.0" encoding="UTF-8"?> <yahoo:error xmlns:yahoo="http://yahooapis.com/v1/base.rng" xml:lang="en-US"> <yahoo:description>Please provide valid credentials. OAuth oauth_problem="unable_to_determine_oauth_type", realm="yahooapis.com" </yahoo:description> </yahoo:error>
Ayrıca, XML hiyerarşisinden dolaşmak için .asXML
formunu kullanabilirsiniz.
Ayrıca öğelerin ve özelliklerin adlarını belirtip Hiyerarşiden geçiş yapılamaz
diğer söz dizimini kullanabilirsiniz.
JavaScript ile hata ayıkla Print() ifadeleri
Özel JavaScript kodunu yürütmek için JavaScript politikasını kullanıyorsanız hata ayıklama bilgilerinin çıktısını İzleme aracına almak için Print() işlevini kullanın. Bu işlev doğrudan JavaScript nesne modeli aracılığıyla uygulanabilir. Örneğin:
if (context.flow=="PROXY_REQ_FLOW") { print("In proxy request flow"); var username = context.getVariable("request.queryparam.user"); print("Got query param: " + username); context.setVariable("USER.name", username); print("Set query param: " + context.getVariable("USER.name")); } if (context.flow=="TARGET_REQ_FLOW") { print("In target request flow"); var username = context.getVariable("USER.name"); var url = "http://mocktarget.apigee.net/user?" context.setVariable("target.url", url + "user=" + username); print("callout to URL: ", context.getVariable("target.url")); }
Sonucu görmek için ekranın alt kısmındaki Tüm işlemlerden çıkış'ı seçin
İzleme penceresi. Çıkışı stepExecution-stdout
adlı Trace mülkünde de bulabilirsiniz.
httpClient ile JavaScript çağrıları yapma
Herhangi bir URL'ye birden çok paralel, eşzamansız HTTP isteğinde bulunmak için httpClient
kullanın
API proxy akışında yürütülen özel JavaScript kodu içinden kullanılabilir.
httpClient
nesnesi, Apigee Edge JavaScript nesnesi tarafından açığa çıkarılıyor
seçin.
httpClient Hakkında
httpClient
nesnesi, Apigee Edge'de çalışan özel JavaScript koduna tabidir
JavaScript nesne modeli aracılığıyla
uygulanabilir. API proxy'sine özel JavaScript eklemek için
JavaScript politikası.
politika çalıştırıldığında özel JavaScript kodu yürütülür.
httpClient
nesnesi, birleşik hizmetler geliştirmek veya
emin olabilirsiniz. Örneğin, birden fazla arka uç çağrısını tek bir API yönteminde birleştirebilirsiniz.
Bu nesne, ServiceÇağrı politikasına alternatif olarak yaygın olarak kullanılır.
Temel kullanım kalıbını aşağıda bulabilirsiniz. Bir İstek nesnesini örneklendirin, ona bir URL atayın (örneğin,
çağırmak istediğiniz arka uç hizmetini) kullanıp httpClient.send
yöntemini bu istekle birlikte çağırın.
nesnesini tanımlayın.
var myRequest = new Request(); myRequest.url = "http://www.example.com"; var exchangeObj = httpClient.send(myRequest);
httpİstemci Referansı
HTTP İstemcisi iki yöntem sunar: get()
ve send()
.
httpClient.get()
HTTP üstbilgileri desteği olmadan, basit HTTP GET
istekleri için kullanışlı bir yöntem.
Kullanım
var exchangeObj = httpClient.get(url);
İadeler
Yöntem bir exchange
nesnesi döndürür. Bu nesnenin özelliği yok ve
aşağıdaki yöntemleri sunar:
isError()
: (boole) httpClient, istemcinin başarısız olması durumundatrue
değerini döndürür sunucuya bağlanmalarını sağlar.4xx
ve5xx
HTTP durum kodları,isError()
false
(bağlantı tamamlandı ve geçerli bir yanıt) kodu döndürüldü.isError()
true
döndürürse bir çağrı yapılırgetResponse()
,undefined
JavaScript'ini döndürür.isSuccess()
: (boole) Gönderme tamamlandıysatrue
değerini döndürür işidir.isComplete()
: (boole) İstek,true
değerini döndürür belirir.waitForComplete()
: İstek tamamlanana kadar (başarılı olarak) ileti dizisini duraklatır veya hata).getResponse()
: (nesne)httpClient.send()
tamamlandı ve başarılı oldu. Döndürülen nesnede content.proxyResponse nesnesiyle özdeş yöntemler ve özellikler kullanın. Bağlam nesnesi özeti konusuna bakın.getError()
: (dize)httpClient.send()
çağrısıyla sonuçlandıysa hata mesajını dize olarak döndürür.
Örnek
HTTP özelliklerini içeren tam yapılandırılmış İstek nesnesi gönderir isteğinde bulunabilirsiniz. Yanıtı işlemek için engellemeyen bir geri çağırma kullanın.
// Add the required the headers for making a specific API request var headers = {'X-SOME-HEADER' : 'some value' }; // Make a GET API request along with headers var myRequest = new Request("http://www.example.com","GET",headers); // Define the callback function and process the response from the GET API request function onComplete(response,error) { // Check if the HTTP request was successful if (response) { context.setVariable('example.status', response.status); } else { context.setVariable('example.error', 'Woops: ' + error); } } // Specify the callback Function as an argument httpClient.get(myRequest, onComplete);
JavaScript politikasını kullanma
Proxy akışına özel JavaScript kodu eklemek için JavaScript politikasını kullanın. JavaScript politikasına bakın.
İlgili konular
- JavaScript politika
- JavaScript nesnesi modeli
- Temel örnekler ve talimatlar için Programming API'si bölümüne bakın proxy'leri oluşturun.
- JavaScript kod örneklerinin işleyişi için GitHub'da Apigee Edge örneklerine bakın.
Apigee Topluluğu makaleleri
Bu ilgili makaleleri Apigee'de bulabilirsiniz. Topluluk: