Variabel permintaan dan respons

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Saat membuat permintaan ke proxy API, Anda dapat 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, saat TargetEndpoint membuat permintaan ke server backend, semua informasi dalam permintaan asli akan diteruskan ke layanan backend.

Hal yang sama berlaku untuk respons yang diterima oleh Edge dari layanan backend. Secara default, semua data yang diterima dalam respons diteruskan tanpa perubahan ke aplikasi yang memulai permintaan.

Bagaimana data permintaan diteruskan ke server backend?

Gambar berikut menunjukkan definisi proxy API:

Permintaan dari klien HTTP yang meneruskan Proxy Endpoint ke Endpoint Target pada backend untuk menjangkau layanan HTTP. Contoh endpoint proxy dan endpoint target disediakan.

Untuk proxy API ini:

  • Host virtual proxy API: "default"
  • Domain ditentukan oleh host virtual: "http://myOrg-prod.apigee.net"
  • 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 menggunakan perintah curl berikut:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Perhatikan bahwa permintaan ini berisi resource "forecastrss" dan satu parameter kueri, w. Edge akan mengurai permintaan seperti yang ditampilkan di bawah ini 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 secara otomatis disertakan dalam permintaan ke server backend. Dari definisi TargetEndpoint, permintaan kemudian memiliki bentuk:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Seperti parameter kueri, header atau parameter formulir apa pun yang Anda sertakan dalam permintaan ke proxy API akan diteruskan ke server backend. Misalnya, Anda membuat permintaan di bawah yang menyertakan header:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/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://myOrg-prod.apigee.net/v1/register/user

Dalam kedua contoh, header dan data formulir diteruskan tanpa perubahan ke layanan backend. Header diwakili 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 Edge dari layanan backend dalam respons diteruskan tanpa perubahan ke aplikasi yang memulai permintaan. Seperti yang dijelaskan di atas untuk permintaan, data yang ditampilkan dalam respons dapat diakses melalui variabel alur di Edge. Untuk informasi selengkapnya, lihat Referensi variabel alur.

Mengakses data permintaan dan respons di proxy API

Ada banyak waktu saat Anda ingin mengubah data permintaan sebelum mengirimkannya ke server backend. Contoh:

  • Untuk menghapus informasi keamanan yang digunakan oleh Edge untuk memvalidasi permintaan. Informasi tersebut tidak diperlukan oleh layanan backend.
  • Untuk menambahkan data yang dikirim ke layanan backend, misalnya untuk melacak pengguna atau mengumpulkan analisis.
  • Untuk memproses permintaan secara kondisional berdasarkan data permintaan. Misalnya, proxy API dapat memiliki beberapa TargetEndpoints. TargetEndpoint yang digunakan oleh permintaan ditentukan oleh data permintaan. Kemudian, Anda menghapus data tersebut dari permintaan sebelum mengirimkannya 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 ini mencakup:

  • Header
  • Parameter kueri
  • Parameter formulir
  • Alamat IP Sumber
  • Isi pesan HTTP

Dalam alur normal, setelah permintaan diproses, proxy akan mengirimkan permintaan yang diubah ke target.

Kebijakan dapat memeriksa variabel permintaan, lalu mengubah atau menolak permintaan berdasarkan konten variabel tersebut. Kebijakan mengubah permintaan dengan menetapkan variabel yang sesuai, misalnya variabel yang sesuai dengan header permintaan.

Mengakses 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, isi pesan HTTP, dan sebagainya.

Proxy menerima pesan respons, lalu menerapkan serangkaian kebijakan padanya, berdasarkan kondisi yang dievaluasi pada respons, yang dapat mengubah atau mengubah respons.

Kebijakan dapat memeriksa variabel respons, lalu mengubah atau menolak permintaan berdasarkan konten variabel tersebut. Kebijakan akan mengubah respons dengan menyetel variabel yang sesuai, misalnya variabel yang sesuai dengan header respons.

Kebijakan umum untuk mengakses variabel alur

Edge menentukan beberapa kebijakan yang dapat Anda gunakan untuk memproses data permintaan dan respons. Kebijakan ini mencakup: