Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Topik ini membahas Model Objek JavaScript Apigee Edge. Anda perlu memahami model ini jika ingin menggunakan kebijakan JavaScript untuk menambahkan JavaScript kustom ke proxy API.
Tentang model objek Edge JavaScript
Model objek JavaScript Apigee Edge menentukan objek dengan properti terkait yang tersedia untuk kode JavaScript yang dieksekusi dalam alur proxy Apigee Edge. Gunakan kebijakan JavaScript untuk melampirkan kode kustom ini ke alur proxy API.
Objek yang ditentukan oleh model ini memiliki cakupan dalam alur proxy API, yang berarti bahwa objek dan properti tertentu hanya tersedia pada titik tertentu dalam alur. Saat JavaScript dieksekusi, cakupan akan dibuat untuk eksekusi tersebut. Dalam cakupan tersebut, referensi objek berikut dibuat:
- context: Objek yang memberikan akses ke konteks pesan
- request: Singkatan yang memungkinkan akses ke objek permintaan
- response: Singkatan yang memungkinkan akses ke objek permintaan
- crypto: Menyediakan berbagai fungsi hash
- print: Fungsi untuk memunculkan output
- properties: Mengizinkan akses baca ke properti konfigurasi pada kebijakan
Objek konteks
Objek context
memiliki cakupan global. Alat ini tersedia di mana saja dalam alur proxy API. Class ini memiliki empat objek turunan: proxyRequest
, proxyResponse
, targetRequest
, targetResponse
. Objek turunan ini memiliki cakupan permintaan dan respons standby, baik permintaan dan respons proxy maupun permintaan dan respons target. Misalnya, jika kebijakan JavaScript dieksekusi di bagian endpoint proxy alur,
objek context.proxyRequest
dan context.proxyResponse
akan berada dalam
cakupan. Jika JavaScript berjalan dalam flow target, objek context.targetRequest
dan
context.targetResponse
akan berada dalam cakupan.
Objek context
juga memiliki properti dan metode, yang dijelaskan secara mendetail
dalam topik ini. Misalnya, contoh kode JavaScript berikut menggunakan properti
context.flow
dan memanggil metode get/setVariable()
pada
context
.
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("USER.name", username); }
Metode ini berinteraksi langsung dengan variabel flow.
Nilai properti context.flow
adalah cakupan flow saat ini. Dalam alur permintaan proxy, parameter ini disetel ke konstanta PROXY_REQ_FLOW
. Jika dalam alur respons target, ini ditetapkan ke TARGET_RESP_FLOW
. Konstanta ini berguna untuk mengeksekusi kode khusus cakupan. Pengambil memungkinkan Anda mendapatkan variabel flow dan penyetel memungkinkan Anda menetapkan
variabel flow. Variabel ini umumnya tersedia di alur proxy dan dapat digunakan oleh
kebijakan lain.
Lihat referensi objek konteks di bawah untuk mengetahui detail dan contoh selengkapnya.
Objek kripto
Objek kripto ini menambahkan dukungan kriptografi dasar berperforma tinggi ke Model Objek JavaScript. Lihat referensi objek kripto di bawah untuk mengetahui detail dan contoh selengkapnya.
Objek request dan response
Objek request
dan response
adalah referensi singkat ke permintaan dan respons standby, baik permintaan dan respons proxy atau permintaan dan respons target. Objek yang dirujuk variabel ini bergantung pada konteks tempat kebijakan JavaScript dijalankan. Jika JavaScript berjalan dalam alur endpoint proxy, variabel permintaan dan respons akan merujuk pada context.proxyRequest
dan context.proxyResponse
. Jika JavaScript berjalan dalam flow target, variabelnya akan merujuk ke context.targetRequest
dan context.targetResponse
.
Fungsi print()
Model objek JavaScript menyertakan fungsi print()
yang dapat Anda gunakan untuk menghasilkan output informasi debug ke alat Edge Trace. Lihat Men-debug dengan pernyataan print()
JavaScript.
Objek properti
Saat menggunakan elemen properties
.
Misalnya, jika konfigurasi JavaScript Anda berisi:
<Javascript name='JS-1' > <Properties> <Property name="number">8675309</Property> <Property name="firstname">Jenny</Property> </Properties> <ResourceURL>jsc://my-code.js</ResourceURL> </Javascript>
Kemudian dalam my-code.js
, Anda dapat:
print(properties.firstname); // prints Jenny print(properties.number); // 8675309
Secara lebih praktis, konfigurasi dapat memungkinkan kode berperilaku lain saat dijalankan di lingkungan yang berbeda, pada momen yang berbeda, atau karena alasan apa pun.
Misalnya, hal berikut menentukan "nama variabel" dan gaya output yang harus dikirimi informasi oleh JavaScript:
<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>Lalu di
emit-results.js
, kode dapat melakukan hal ini:
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)); }
referensi objek kripto
Objek kripto memungkinkan Anda melakukan fungsi hashing kriptografi dasar dalam JavaScript.
Objek kripto memiliki cakupan global. Ini tersedia di mana saja dalam alur proxy API. Crypto memungkinkan Anda bekerja dengan objek hash ini:
- SHA-1
- SHA256
- SHA512
- MD5
Bekerja dengan objek SHA-1
Anda dapat membuat objek SHA-1, memperbaruinya, dan mengonversinya menjadi nilai hex dan base64.
Membuat objek SHA-1 baru
var _sha1 = crypto.getSHA1();
Memperbarui objek SHA-1
Sintaksis
_sha1.update(value);
Parameter
- value - (String) Nilai string apa pun.
Contoh
Mengupdate objek SHA-1:
_sha1.update("salt_value"); _sha1.update("some text");
Menampilkan objek SHA-1 sebagai string heksadesimal
var _hashed_token = _sha1.digest();
Menampilkan objek SHA-1 sebagai string base64
var _hashed_token = _sha1.digest64();
Bekerja dengan objek SHA-256
Anda dapat membuat objek SHA-256, mengupdatenya, dan mengonversinya menjadi nilai heksadesimal dan base64.
Membuat objek SHA-256 baru
var _sha256 = crypto.getSHA256();
Mengupdate objek SHA-256
Sintaksis
_sha256.update(value);
Parameter
- value - (String) Nilai string apa pun.
Contoh
Mengupdate objek SHA-256:
_sha256.update("salt_value"); _sha256.update("some text");
Menampilkan objek SHA-256 sebagai string heksadesimal
var _hashed_token = _sha256.digest();
Menampilkan objek SHA-256 sebagai string base64
var _hashed_token = _sha256.digest64();
Bekerja dengan objek SHA-512
Anda dapat membuat objek SHA-512, memperbaruinya, dan mengonversinya menjadi nilai heksadesimal dan base64.
Membuat objek SHA-512 baru
var _sha512 = crypto.getSHA512();
Mengupdate objek SHA-512
Sintaksis
_sha512.update(value);
Parameter
- value - (String) Nilai string apa pun.
Contoh
Mengupdate objek SHA-512:
_sha512.update("salt_value"); _sha512.update("some text");
Menampilkan objek SHA-512 sebagai string heksadesimal
var _hashed_token = _sha512.digest();
Menampilkan objek SHA-512 sebagai string base64
var _hashed_token = _sha512.digest64();
Bekerja dengan objek MD5
Anda dapat membuat objek MD5, memperbaruinya, dan mengonversinya menjadi nilai heksadesimal dan base64.
Membuat objek MD5 baru
var _md5 = crypto.getMD5();
Memperbarui objek MD5
Sintaksis
_md5.update(value);
Parameter
- value - (String) Nilai string apa pun.
Contoh
Update objek MD5:
_md5.update("salt_value"); _md5.update("some text");
Menampilkan objek MD5 sebagai string heksadesimal
var _hashed_token = _md5.digest();
Menampilkan objek MD5 sebagai string base64
var _hashed_token = _md5.digest64();
Dukungan tanggal/waktu kripto
Objek kripto mendukung pola pemformatan tanggal/waktu.
crypto.dateFormat()
Menampilkan tanggal dalam format string.
Sintaksis
crypto.dateFormat(format, [timezone], [time])
Parameter
- format - (String) Implementasi yang mendasarinya untuk parameter ini adalah java.text.SimpleDateFormat. Misalnya: 'yyyy-MM-DD HH:mm:ss.SSS'
- timezone - (String, opsional) Implementasi yang mendasari untuk parameter ini adalah java.util.TimeZone. Parameter ini memiliki sameDefault: UTC
- time - (Angka, opsional) Nilai stempel waktu Unix yang akan diformat. Default: waktu saat ini
Contoh
Dapatkan waktu saat ini, hingga milidetik:
var _now = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS');
Dapatkan waktu saat ini untuk Zona Waktu Pasifik:
var _pst = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS','PST');
Dapatkan nilai sepuluh detik dari sekarang:
var _timeNow = Number(context.getVariable('system.timestamp')); var ten_seconds = crypto.dateFormat('yyyy-MM-DD HH:mm:ss.SSS','PST', _timeNow + 10 * 1000);
Contoh tambahan. Lihat juga dokumentasi java.text.SimpleDateFormat.
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");
Gunakan getHash() untuk mendapatkan objek hash apa pun yang didukung
Contoh
var _hash1 = crypto.getHash('MD5'); var _hash2 = crypto.getHash('SHA-1'); var _hash3 = crypto.getHash('SHA-256'); var _hash4 = crypto.getHash('SHA-512');
Sampel dengan kripto
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'; }
referensi objek konteks
Objek context
dibuat untuk setiap transaksi permintaan/respons yang dijalankan oleh proxy API. Objek context
menampilkan metode untuk mendapatkan, menetapkan, dan menghapus variabel
yang terkait dengan setiap transaksi.
Variabel menentukan properti khusus untuk transaksi. Waktu, lokalitas
klien yang meminta, agen pengguna dari klien yang meminta, dan URL layanan target
adalah semua contoh variabel yang tersedia dalam context
. Oleh karena itu,
context
berguna untuk mem-build logika yang bergantung pada properti ini untuk menjalankan
perilaku kustom.
Lihat Referensi variabel flow dan kebijakan Ekstrak Variabel.
ringkasan objek konteks
Tabel ini menjelaskan secara singkat objek konteks dan turunannya, serta mencantumkan properti yang terikat ke masing-masing properti tersebut.
Nama | Deskripsi | Properti |
---|---|---|
context |
Wrapper untuk konteks pipeline pemrosesan pesan serta Flow permintaan dan respons yang dijalankan oleh ProxyEndpoint dan TargetEndpoint. | alur, sesi |
context. proxyRequest |
Objek yang mewakili pesan permintaan masuk ke ProxyEndpoint (dari aplikasi yang meminta ke proxy API) | header, parameter kueri, metode, isi, url |
context. targetRequest |
Objek yang mewakili pesan permintaan keluar dari TargetEndpoint (dari proxy API ke layanan backend). | header, parameter kueri, metode, isi, url |
context. targetResponse |
Objek yang mewakili pesan respons target masuk (dari layanan backend ke proxy API) | header, konten, status |
context. proxyResponse |
Objek yang mewakili pesan respons proxy keluar (dari proxy API ke aplikasi yang meminta) | header, konten, status |
context.flow |
Nama alur saat ini. | Lihat context.flow di bawah. |
context.session |
Peta pasangan nama/nilai yang dapat Anda gunakan untuk meneruskan objek di antara dua langkah berbeda yang dijalankan dalam konteks yang sama. Misalnya: context.session['key'] = 123 . |
Untuk mengetahui informasi selengkapnya tentang kapan dan kapan sebaiknya tidak menggunakan objek ini, lihat Diskusi Komunitas Apigee ini. |
metode objek konteks
context.getVariable()
Mengambil nilai variabel kustom atau yang telah ditetapkan.
Sintaksis
context.getVariable("variable-name");
Contoh
Untuk mendapatkan nilai untuk tahun berjalan:
var year = context.getVariable('system.time.year');
context.setVariable()
Menetapkan nilai untuk variabel kustom atau untuk variabel standar yang dapat ditulis.
Sintaksis
context.setVariable("variable-name", value);
Contoh
Skenario umum untuk menetapkan variabel adalah ketika proxy API harus menulis URL target secara dinamis. JavaScript berikut memperoleh nilai variabel yang disebut USER.name
, menambahkan nilai tersebut sebagai parameter kueri ke URL http://mocktarget.apigee.net?user=
, lalu menetapkan target.url
yang telah ditentukan ke nilai tersebut.
context.setVariable("target.url", "http://mocktarget.apigee.net/user?user="+context.getVariable("USER.name"));
context.removeVariable()
Menghapus variabel dari konteks.
Sintaksis
context.removeVariable('variable-name');
properti objek konteks
Properti flow
adalah string yang mengidentifikasi alur proxy API saat ini. Properti
ini digunakan untuk menunjukkan Alur tempat JavaScript dilampirkan. Nilai yang didukung adalah:
PROXY_REQ_FLOW
PROXY_RESP_FLOW
TARGET_REQ_FLOW
TARGET_RESP_FLOW
Setiap nama Alur mencakup PraFlow, PostFlow, dan Alur bersyarat yang ditentukan di ProxyEndpoints atau TargetEndpoints.
Properti opsional ini berguna ketika JavaScript umum dijalankan di lebih dari satu Alur, tetapi dapat bervariasi perilakunya, bergantung pada Alur tempatnya dieksekusi. Gunakan properti Alur untuk modul JavaScript yang dimaksudkan untuk digunakan kembali di beberapa proxy API, yang mengharuskan kode memeriksa Alur saat ini sebelum mengeksekusi logika.
Contoh
Tetapkan header HTTP hanya pada Alur targetRequest:
if (context.flow=="TARGET_REQ_FLOW") { context.targetRequest.headers['TARGET-HEADER-X']='foo'; }
Tetapkan konten hanya di Alur proxyResponse:
if (context.flow=="PROXY_RESP_FLOW") { context.proxyResponse.content='bar'; }
Peta pasangan nama/nilai yang dapat digunakan untuk meneruskan objek di antara dua kebijakan yang dijalankan dalam konteks pesan yang sama.
Contoh
Tetapkan nilai dalam sesi:
context.session['key'] = 123;
Dapatkan manfaat dari sesi:
var value = context.session['key']; // 123
turunan objek konteks
Seperti yang ditunjukkan di bawah ini, Alur proxy API lengkap mencakup empat fase yang berbeda, yang masing-masing memiliki objek pesan terkait yang merupakan turunan dari objek konteks:
context.proxyRequest
: Pesan permintaan masuk yang diterima dari klien yang meminta.context.targetRequest
: Pesan permintaan keluar yang dikirim ke layanan backend.context.proxyResponse
: Pesan respons keluar yang ditampilkan ke klien yang meminta.context.targetResponse
: Pesan permintaan masuk yang diterima dari layanan backend.
Bagian berikut menjelaskan metode dan properti objek ini:
.*Meminta objek turunan
Untuk setiap transaksi HTTP yang dijalankan di proxy API, dua objek pesan permintaan akan dibuat: satu inbound (permintaan dari klien) dan satu inbound (permintaan yang dihasilkan oleh proxy API dan dikirim ke target backend).
Objek context
memiliki objek turunan yang mewakili pesan permintaan berikut: context.proxyRequest
dan context.targetRequest
. Berbagai objek ini memungkinkan Anda mengakses properti dalam alur permintaan yang berada dalam cakupan saat kode JavaScript Anda dieksekusi.
Catatan: Anda juga dapat menggunakan objek shorthand request
untuk mengakses
properti ini dalam alur permintaan. Objek request
mengacu pada
context.proxyRequest
atau context.targetRequest
, bergantung pada di mana dalam
alur yang dijalankan kode JavaScript Anda.
konteks.*Meminta properti objek turunan
Nama properti | Deskripsi |
---|---|
url |
Properti URL lengkap permintaan terdiri dari properti berikut:
Saat mendapatkan
|
Contoh: context.targetRequest.url = 'http://www.example.com/path?q1=1' context.targetRequest.protocol ='https'; |
|
headers |
Header permintaan HTTP sebagai pemetaan |
Contoh: Untuk permintaan HTTP ini: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5ZJavaScript berikut: context.proxyRequest.headers['Content-Type']; context.proxyRequest.headers['Authorization']; akan menampilkan nilai berikut application/json Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z |
|
queryParams |
Parameter kueri pesan permintaan sebagai pemetaan |
Contoh: "?city=PaloAlto&city=NewYork" dapat diakses sebagai: context.proxyRequest.queryParams['city']; // == 'PaloAlto' context.proxyRequest.queryParams['city'][0] // == 'PaloAlto' context.proxyRequest.queryParams['city'][1]; // == 'NewYork' context.proxyRequest.queryParams['city'].length(); // == 2 |
|
method |
Kata kerja HTTP ( |
Contoh: Untuk permintaan ini: POST /v1/blogs HTTP/1.1 Host: api.example.com Content-Type: application/json Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z JavaScript berikut: context.proxyRequest.method; akan menampilkan nilai berikut POST |
|
body |
Isi pesan (payload) dari permintaan HTTP. Isi permintaan memiliki anggota berikut:
|
Contoh: Untuk isi XML: <customer number='1'> <name>Fred<name/> <customer/> Untuk mengakses elemen objek XML sebagai berikut: var name = context.targetRequest.body.asXML.name; Untuk mengakses atribut XML, gunakan notasi var number = context.targetRequest.body.asXML.@number; Untuk isi permintaan JSON: { "a": 1 , "b" : "2" } var a = context.proxyRequest.body.asJSON.a; // == 1 var b = context.proxyRequest.body.asJSON.b; // == 2 Untuk membaca parameter formulir: "vehicle=Car&vehicle=Truck" v0 = context.proxyRequest.body.asForm['vehicle'][0]; v1 = context.proxyRequest.body.asForm['vehicle'][1]; |
context.*Respons objek turunan
Untuk setiap transaksi HTTP yang dijalankan di proxy API, dua objek pesan respons akan dibuat: satu inbound (respons dari layanan backend) dan satu inbound (respons yang dikirim kembali ke klien.)
Objek konteks memiliki objek turunan yang mewakili pesan respons berikut: context.proxyResponse
dan context.targetResponse
. Berbagai objek ini memungkinkan Anda
mengakses properti dalam alur respons yang berada dalam cakupan saat kode JavaScript
dieksekusi.
Catatan: Anda juga dapat menggunakan objek shorthand response
untuk mengakses
properti ini dari alur respons. Objek response
mengacu pada
context.proxyResponse
atau context.targetResponse
, bergantung pada di mana dalam
alur yang dijalankan kode JavaScript Anda.
context.*Properti objek respons
Nama properti | Deskripsi |
---|---|
headers |
Header HTTP pesan respons sebagai pemetaan |
Contoh: var cookie = context.targetResponse.headers['Set-Cookie']; |
|
status |
Kode status dengan pesan status sebagai properti. Kode status dan pesan status tersedia sebagai properti. |
Contoh: var status = context.targetResponse.status.code; // 200 var msg = context.targetResponse.status.message; // "OK" |
|
content |
Isi HTTP (konten payload) dari pesan respons. Konten respons memiliki anggota berikut: context.targetResponse.content.asXML; context.targetResponse.content.asJSON; |
Menggunakan notasi .asXML
Ada cara praktis untuk menjelajahi dokumen XML menggunakan notasi .asXML
.
Bagian ini menjelaskan cara menggunakan notasi ini, dan perbedaannya dengan
request.content
dan context.proxyRequest.content
.
Contoh:
request.content.asXML
atau
context.proxyRequest.content.asXML
Formulir *.content
dan *.content.asXML
dapat digunakan dalam konteks
string, dan JavaScript akan memaksanya untuk menjadi string. Pada kasus pertama
(*.content
), string ini mencakup semua deklarasi serta komentar XML. Pada kasus terakhir (*.content.asXML
), nilai string hasil akan dibersihkan dari deklarasi dan komentar.
Contoh
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>
Selain itu, Anda dapat menggunakan bentuk .asXML
untuk menjelajahi hierarki XML, dengan
menentukan nama elemen dan atribut. Tidak mungkin untuk melewati hierarki
menggunakan sintaksis lainnya.
Melakukan debug dengan pernyataan print() JavaScript
Jika menggunakan kebijakan JavaScript untuk mengeksekusi kode JavaScript kustom, perhatikan bahwa Anda dapat menggunakan fungsi print() untuk menghasilkan informasi debug ke alat Trace. Fungsi ini tersedia langsung melalui model objek JavaScript. Contoh:
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")); }
Untuk melihat outputnya, pilih Output from all transaction di bagian bawah jendela Trace. Anda juga dapat menemukan output di properti Trace yang disebut stepExecution-stdout
.
Membuat info JavaScript dengan httpClient
Gunakan httpClient
untuk membuat beberapa permintaan HTTP paralel, yang asinkron ke URL apa pun dari dalam kode JavaScript kustom yang dieksekusi di alur proxy API.
Objek httpClient
diekspos oleh model objek JavaScript Apigee Edge.
Tentang httpClient
Objek httpClient
diekspos ke kode JavaScript kustom yang berjalan di Apigee Edge
melalui model objek JavaScript. Untuk melampirkan JavaScript kustom ke proxy API, gunakan
kebijakan JavaScript. Saat kebijakan berjalan, kode JavaScript kustom akan dieksekusi.
Objek httpClient
berguna untuk mengembangkan layanan gabungan atau
mashup. Misalnya, Anda dapat menggabungkan beberapa panggilan backend ke dalam satu metode API.
Objek ini biasanya digunakan sebagai alternatif untuk kebijakan ServiceCallout.
Berikut adalah pola penggunaan dasar. Buat instance objek Request, tetapkan URL (misalnya, ke layanan backend yang ingin Anda panggil), dan panggil httpClient.send
dengan objek permintaan tersebut.
var myRequest = new Request(); myRequest.url = "http://www.example.com"; var exchangeObj = httpClient.send(myRequest);
Referensi httpClient
Klien HTTP mengekspos dua metode: get()
dan send()
.
httpClient.get()
Metode praktis untuk permintaan GET
HTTP sederhana, tanpa dukungan untuk header HTTP.
Penggunaan
var exchangeObj = httpClient.get(url);
Hasil
Metode ini menampilkan objek exchange
. Objek ini tidak memiliki properti, dan menampilkan metode berikut:
isError()
: (boolean) Menampilkantrue
jika httpClient tidak dapat terhubung ke server. Kode status HTTP4xx
dan5xx
menghasilkanisError()
false
, karena koneksi selesai dan kode respons yang valid ditampilkan. JikaisError()
menampilkantrue
, panggilan kegetResponse()
akan menampilkanundefined
JavaScript.isSuccess()
: (boolean) Menampilkantrue
jika pengiriman selesai dan berhasil.isComplete()
: (boolean) Menampilkantrue
jika permintaan selesai.waitForComplete()
: Menjeda thread hingga permintaan selesai (secara berhasil atau error).getResponse()
: (object) Menampilkan objek respons jikahttpClient.send()
selesai dan berhasil. Objek yang ditampilkan memiliki metode dan properti yang identik dengan objek context.proxyResponse. Lihat ringkasan objek konteks.getError()
: (string) Jika panggilan kehttpClient.send()
menghasilkan error, menampilkan pesan error sebagai string.
Contoh
Mengirim objek Permintaan yang dikonfigurasi sepenuhnya yang berisi properti permintaan HTTP. Gunakan callback yang tidak memblokir untuk memproses respons.
// 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);
Menggunakan kebijakan JavaScript
Gunakan kebijakan JavaScript untuk melampirkan kode JavaScript kustom ke alur proxy. Lihat kebijakan JavaScript.
Topik terkait
- Kebijakan JavaScript
- Model objek JavaScript
- Untuk contoh dan petunjuk dasar, lihat proxy Programming API dengan JavaScript.
- Untuk mengetahui contoh kode JavaScript, lihat contoh Apigee Edge di GitHub.
Artikel Komunitas Apigee
Anda dapat menemukan artikel terkait ini di Komunitas Apigee: