Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Saat membuat permintaan ke proxy API, Anda bisa meneruskan salah satu atau semua informasi berikut, bergantung pada cara proxy API dikonfigurasi:
- Header permintaan
- Parameter kueri
- Data formulir
- Payload XML atau JSON
- URI Resource
Secara default, semua data dalam permintaan diteruskan tanpa perubahan dari ProxyEndpoint ke TargetEndpoint. Oleh karena itu, ketika TargetEndpoint membuat permintaan ke server backend, semua informasi dalam permintaan asli diteruskan ke layanan backend.
Hal yang sama berlaku untuk respons yang diterima oleh Apigee dari layanan backend. Menurut secara default, semua data yang diterima dalam respons diteruskan tanpa berubah ke aplikasi yang berasal permintaan.
Cara data permintaan diteruskan ke backend server?
Gambar berikut menampilkan definisi proxy API:
Untuk proxy API ini:
- Host virtual proxy API:
default
- Domain yang ditentukan oleh nama host di grup lingkungan:
http://www.example.com
- Jalur dasar proxy:
/v1/weather
- TargetEndpoint yang ditentukan oleh aturan rute:
default
- URL Target:
http://weather.yahooapis.com
Aplikasi klien membuat permintaan GET
ke proxy API dengan menggunakan hal-hal berikut
Perintah curl
:
curl -X GET http://www.example.com/v1/weather/forecastrss?w=12797282
Perhatikan, permintaan ini berisi resource forecastrss
dan satu parameter kueri,
w
. Apigee mengurai permintaan sebagai
yang ditampilkan di bawah dan menetapkan bagian permintaan ke variabel alur:
{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}
Variabel alur ditetapkan dengan nilai berikut:
request.verb
:GET
proxy.basepath
:/v1/weather
proxy.pathsuffix
:forecastrss
request.querystring
:w=12797282
TargetEndpoint kemudian membuat permintaan ke layanan backend menggunakan informasi dari permintaan:
{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}
Perhatikan bagaimana parameter resource dan kueri yang ditentukan dalam permintaan disertakan secara otomatis dalam permintaan ke server backend. Dari definisi TargetEndpoint, permintaan berbentuk:
curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282
Seperti parameter kueri, setiap header atau parameter formulir yang Anda sertakan dalam permintaan ke API {i>proxy<i} diteruskan ke server backend. Misalnya, Anda membuat permintaan di bawah ini yang menyertakan {i>header<i}:
curl -X GET -H 'Content-type:application/xml' http://www.example.com/v1/weather/forecastrss?w=12797282
Atau permintaan dalam formulir di bawah ini untuk menyertakan header dan data formulir:
curl -X POST -H "Content-type:application/json" -d \ '{"email" : "janetutorialxml@example.com", "firstName" : "Jane", "lastName" : "Tutorial", "userName" : "jtutorialxml" }' \ http://www.example.com/v1/register/user
Dalam kedua contoh tersebut, header dan data formulir diteruskan tanpa perubahan ke layanan backend. Tujuan
header direpresentasikan oleh variabel alur seperti request.headers.count
dan
request.headers.names
. Data formulir direpresentasikan oleh variabel alur seperti
request.formparam.count
dan request.formparam.names
.
Bagaimana data respons ditampilkan?
Secara default, semua data yang diterima oleh Apigee dari layanan backend dalam respons akan diteruskan tidak berubah pada aplikasi yang menghasilkan permintaan. Seperti yang dijelaskan di atas untuk permintaan, data yang ditampilkan dalam respons dapat diakses melalui variabel alur di Apigee. Untuk informasi selengkapnya, lihat Referensi variabel flow.
Data permintaan dan respons akses di proxy API
Sering kali Anda ingin mengubah data permintaan sebelum mengirimkannya ke backend server tertentu. Contoh:
- Untuk menghapus informasi keamanan yang digunakan oleh Apigee untuk memvalidasi permintaan. Informasi itu tidak yang diperlukan oleh layanan backend.
- Untuk menambahkan data yang dikirim ke layanan backend, misalnya untuk melacak pengguna atau mengumpulkan Analytics.
- Untuk memproses permintaan secara kondisional berdasarkan data permintaan. Misalnya, proxy API dapat memiliki beberapa TargetEndpoint. TargetEndpoint yang digunakan oleh permintaan ditentukan berdasarkan permintaan layanan otomatis dan data skalabel. Anda kemudian menghapus data tersebut dari permintaan sebelum mengirimnya ke layanan backend.
Hal yang sama berlaku untuk data dalam respons. Sebagai bagian dari pemrosesan respons, proxy API mungkin ingin memodifikasi data sebelum mengembalikannya ke aplikasi yang meminta.
Pesan permintaan akses
Anda dapat menggunakan kebijakan untuk mengakses dan mengubah bagian pesan permintaan. Bagian-bagian ini meliputi:
- Header
- Parameter kueri
- Parameter formulir
- Alamat IP Sumber
- Isi pesan HTTP
Dalam alur normal, setelah permintaan diproses, {i>proxy<i} kemudian mengirim permintaan permintaan penautan ke target.
Kebijakan dapat memeriksa variabel permintaan, kemudian mengubah atau menolak permintaan berdasarkan isi variabel-variabel tersebut. Kebijakan mengubah permintaan dengan mengatur variabel yang sesuai, misalnya variabel yang sesuai dengan header permintaan.
Akses pesan respons
Dengan menggunakan variabel yang berlaku untuk pesan respons, kebijakan dapat mengakses komponen pesan termasuk header, parameter kueri, dan parameter formulir, alamat IP sumber, permintaan isi pesan, dan sebagainya.
{i>Proxy<i} menerima pesan respons, lalu berlaku untuk serangkaian kebijakan, berdasarkan kondisi yang dievaluasi pada respons, yang dapat memodifikasi atau mentransformasi respons.
Kebijakan dapat memeriksa variabel respons, kemudian mengubah atau menolak permintaan berdasarkan isi variabel-variabel tersebut. Kebijakan mengubah respons dengan mengatur variabel yang sesuai, misalnya variabel yang sesuai dengan header respons.
Kebijakan umum untuk mengakses variabel alur
Apigee menetapkan beberapa kebijakan yang dapat Anda gunakan untuk memproses data permintaan dan respons. Ini kebijakan tersebut meliputi:
- Kebijakan MenetapkanMessage: Membuat atau mengubah pesan permintaan atau respons HTTP selama proxy API alur kerja. Juga membuat dan mengisi variabel flow baru.
- Kebijakan ExtractVariables: Ekstrak konten dari pesan, termasuk header, jalur URI, payload, dan parameter kueri, untuk digunakan dalam pernyataan kondisi. Kebijakan ini kemudian menerapkan pola teks untuk isi pesan dan saat menemukan kecocokan, variabel yang ditentukan akan ditetapkan.
- Kebijakan JSONtoXML dan kebijakan XMLtoJSON: Konversi pesan dari JavaScript Object Notation (JSON) ke bahasa markup yang dapat diperluas (XML), atau sebaliknya.
- Kebijakan Javacallout, kebijakan JavaScript, kebijakan PythonScript, Kebijakan RegularExpressionProtection: Kebijakan ini memungkinkan Anda menulis skrip untuk mengakses variabel alur yang berisi data permintaan dan respons.