Kebijakan HTTPModifier

Apa

Kebijakan HTTPModifier dapat mengubah pesan permintaan atau respons yang ada.

Kebijakan ini memungkinkan Anda melakukan tindakan berikut pada pesan tersebut:

  • Menambahkan parameter formulir, header, atau parameter kueri baru ke pesan
  • Hapus header, parameter kueri, dan parameter formulir dari pesan
  • Menetapkan nilai properti yang ada dalam pesan

Dengan HTTPModifier, Anda dapat menambahkan, mengubah, atau menghapus properti permintaan atau respons. Atau, Anda dapat menggunakan HTTPModifier untuk membuat pesan respons atau permintaan kustom dan meneruskannya ke target alternatif, seperti yang dijelaskan dalam Membuat pesan permintaan kustom.

Kebijakan HTTPModifier dapat membuat variabel alur dengan elemen turunan berikut:

Urutan Anda mengatur elemen <Add>, <Set>, dan <Remove> sangatlah penting. Kebijakan akan menjalankan tindakan tersebut sesuai urutan kemunculannya dalam konfigurasi kebijakan. Jika Anda perlu menghapus semua header, lalu menetapkan header tertentu, Anda harus menyertakan elemen <Remove> sebelum elemen <Set>.

Kebijakan ini adalah Kebijakan standar dan dapat di-deploy ke jenis lingkungan apa pun. Tidak semua pengguna perlu mengetahui tentang kebijakan dan jenis lingkungan. Untuk mengetahui informasi tentang jenis kebijakan dan ketersediaan untuk setiap jenis lingkungan, lihat Jenis kebijakan.

Elemen <HTTPModifier>

Menentukan kebijakan HTTPModifier.

Nilai Default Lihat tab Kebijakan Default di bawah
Wajib? Diperlukan
Type Objek kompleks
Elemen Induk T/A
Elemen Turunan <Add>
<AssignTo>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

Elemen <HTTPModifier> menggunakan sintaksis berikut:

Sintaksis

Elemen <HTTPModifier> menggunakan sintaksis berikut:

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- All HTTPModifier child elements are optional -->
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>

  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>

  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>

  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</HTTPModifier>

Kebijakan Default

Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan HTTPModifier ke alur di UI Apigee:

<HTTPModifier continueOnError="false" enabled="true" name="http-modifier-default">
  <DisplayName>HTTP Modifier-1</DisplayName>
  <Properties/>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</HTTPModifier>

Saat Anda menyisipkan kebijakan HTTPModifier baru di UI Apigee, template tersebut akan berisi stub untuk semua kemungkinan operasi. Biasanya, Anda memilih operasi mana yang ingin dilakukan dengan kebijakan ini dan menghapus elemen turunan lainnya. Misalnya, jika Anda ingin menjalankan operasi penambahan, gunakan elemen <Add> dan hapus <Remove> serta elemen turunan lainnya dari kebijakan agar lebih mudah dibaca.

Elemen ini memiliki atribut berikut yang sama untuk semua kebijakan:

Atribut Default Wajib? Deskripsi
name T/A Wajib

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Atau, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural-language yang berbeda.

continueOnError false Opsional Setel ke false untuk menampilkan error jika kebijakan gagal. Ini adalah perilaku yang wajar untuk sebagian besar kebijakan. Setel ke true agar eksekusi alur tetap berlanjut bahkan setelah kebijakan gagal. Lihat juga:
enabled true Opsional Setel ke true untuk menerapkan kebijakan. Setel ke false untuk menonaktifkan kebijakan. Kebijakan tidak akan diterapkan meskipun tetap melekat pada alur.
async   false Tidak digunakan lagi Atribut ini sudah tidak digunakan lagi.

Tabel berikut memberikan deskripsi tingkat tinggi untuk elemen turunan <HTTPModifier>:

Elemen Turunan Wajib? Deskripsi
Operasi umum
<Add> Opsional Menambahkan informasi ke objek pesan yang ditentukan oleh elemen <AssignTo>.

<Add> menambahkan header atau parameter ke pesan yang tidak ada dalam pesan asli. Perhatikan bahwa <Set> juga menyediakan fungsi ini.

Untuk menimpa header atau parameter yang ada, gunakan elemen <Set>.

<Remove> Opsional Menghapus elemen yang ditentukan dari variabel pesan yang ditentukan dalam elemen <AssignTo>.
<Set> Opsional Mengganti nilai properti yang ada pada permintaan atau respons, yang ditentukan oleh elemen <AssignTo>.

<Set> menimpa header atau parameter yang sudah ada dalam pesan asli atau menambahkan yang baru jika tidak ada.

Elemen turunan lainnya
<AssignTo> Opsional Menentukan pesan yang menjalankan kebijakan HTTPModifier. Ini bisa berupa permintaan atau respons standar, atau bisa juga pesan khusus baru.
<IgnoreUnresolvedVariables> Opsional Menentukan apakah pemrosesan berhenti ketika variabel yang belum terselesaikan ditemukan.

Setiap elemen turunan ini dijelaskan di bagian berikutnya.

Contoh

Contoh berikut menunjukkan beberapa cara untuk menggunakan kebijakan HTTPModifier:

1: Tambahkan header

Contoh berikut menambahkan header ke permintaan dengan elemen <Add>. Variabel VerifyAPIKey dalam contoh ini dihasilkan oleh kebijakan VerifyAPIKey:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

2: Mengubah respons

Contoh berikut memodifikasi objek respons yang ada dengan menambahkan header ke objek tersebut:

<HTTPModifier name="HM-modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Contoh ini tidak membuat pesan baru. Sebagai gantinya, metode ini akan memodifikasi pesan respons yang ada dengan menambahkan header HTTP.

Karena contoh ini menentukan response sebagai nama variabel dalam elemen <AssignTo>, kebijakan ini mengubah objek respons yang awalnya ditetapkan dengan data yang ditampilkan oleh server target.

Header HTTP yang ditambahkan ke pesan respons oleh kebijakan ini berasal dari variabel yang diisi oleh kebijakan LookupCache. Oleh karena itu, pesan respons yang dimodifikasi oleh kebijakan HTTPModifier ini berisi header HTTP yang menunjukkan apakah hasil telah diambil dari cache atau tidak. Menyetel header dalam respons dapat berguna untuk proses debug dan pemecahan masalah.

3: Menghapus parameter kueri

Contoh berikut menghapus parameter kueri apikey dari permintaan:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Praktik terbaiknya adalah menghapus parameter kueri apikey dari pesan permintaan jika Anda menggunakan kebijakan VerifyAPIKey untuk autentikasi pengguna. Anda melakukan hal ini untuk mencegah informasi kunci sensitif diteruskan ke target backend.

Referensi elemen turunan

Bagian ini menjelaskan elemen turunan <HTTPModifier>.

<Add>

Menambahkan informasi ke permintaan atau respons, yang ditentukan oleh elemen <AssignTo>.

Elemen <Add> menambahkan properti baru pada pesan yang tidak ada dalam pesan asli. Perhatikan bahwa <Set> juga menyediakan fungsi ini. Untuk mengubah nilai properti yang sudah ada, gunakan elemen <Set>.

Nilai Default T/A
Wajib? Opsional
Type Jenis kompleks
Elemen Induk <HTTPModifier>
Elemen Turunan <FormParams>
<Headers>
<QueryParams>

Elemen <Add> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Contoh 1

Contoh berikut menggunakan elemen <FormParams> untuk mendapatkan nilai tiga parameter string kueri dari permintaan awal dan menetapkannya sebagai parameter formulir pada permintaan endpoint target:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut menggunakan elemen <Headers> untuk menambahkan header partner-id ke permintaan yang akan dikirim ke endpoint target:

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 3

Contoh berikut menggunakan elemen <QueryParams> untuk menambahkan satu parameter kueri dengan nilai statis ke permintaan:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh ini menggunakan <Add> dalam preflow permintaan. Jika Anda melihat hasil dalam alat seperti Alat debug, permintaan untuk https://example-target.com/get menjadi https://example-target.com/get?myParam=42.

Elemen turunan <Add> mendukung penggantian string dinamis, yang dikenal sebagai pembuatan template pesan.

<FormParams> (turunan dari <Add>)

Menambahkan parameter formulir baru ke pesan permintaan. Elemen ini tidak berpengaruh pada pesan respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <FormParam>
Elemen Induk <Add>
Elemen Turunan <FormParam>

Elemen <FormParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
  </Add>
</HTTPModifier>

Contoh 1

Contoh berikut menambahkan parameter bentuk tunggal (answer) dan nilai statis (42) ke permintaan:

<HTTPModifier name="HM-add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut mendapatkan nilai parameter kueri name dan menambahkannya ke permintaan sebagai parameter formulir, lalu menghapus parameter kueri:

<HTTPModifier name="HM-Swap-QueryParam-to-FormParams">
  <Add>
    <FormParam name="name">{request.queryparam.name}
  </Add>
  <Remove>
    <QueryParam name="name"/>
  </Remove>
</HTTPModifier>

Perhatikan bahwa contoh ini tidak menentukan target dengan <AssignTo>. Kebijakan ini hanya menambahkan parameter ke permintaan tersebut.

Contoh 3

Contoh berikut menambahkan beberapa parameter formulir ke permintaan:

<HTTPModifier name="HM-add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="username">{request.queryparam.name}</FormParam>
      <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam>
      <FormParam name="default_language">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <Remove>
    <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh ini mendapatkan parameter string kueri dari permintaan asal dan menambahkannya sebagai parameter formulir dengan nama yang berbeda. Kemudian, parameter kueri asli akan dihapus. Apigee akan mengirim permintaan yang telah diubah ke endpoint target.

Anda dapat menggunakan alat Debug untuk melihat alurnya. Anda akan melihat bahwa isi permintaan berisi data formulir berenkode URL, yang awalnya diteruskan sebagai parameter string kueri:

username=nick&zip_code=90210&default_language=en

Anda hanya dapat menggunakan <FormParams> jika kriteria berikut terpenuhi:

  • Kata kerja HTTP: GET, POST
  • Jenis pesan: Permintaan
  • Salah satu (atau kedua) hal berikut:
    • Data formulir: Tetapkan ke beberapa nilai, atau "" (string kosong). Misalnya, dengan curl, tambahkan -d "" ke permintaan Anda.
    • Header Content-Length: Ditetapkan ke 0 (jika tidak ada data dalam permintaan asli; jika tidak, panjang saat ini, dalam byte). Misalnya, dengan curl, tambahkan -H "Content-Length: 0" ke permintaan Anda.

Contoh:

curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded"
  https://ahamilton-eval-test.apigee.net/am-test

Saat Anda menambahkan <FormParams>, Apigee akan menetapkan header Content-Type permintaan ke application/x-www-form-urlencoded sebelum mengirim pesan ke layanan target.

<Headers> (turunan dari <Add>)

Menambahkan header baru ke permintaan atau respons yang ditentukan, yang ditentukan oleh elemen <AssignTo>.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <Header>
Elemen Induk <Add>
Elemen Turunan <Header>

Elemen <Headers> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Add>
</HTTPModifier>

Contoh 1

Contoh berikut menambahkan header partner-id ke pesan permintaan, dan menetapkan nilai variabel alur verifyapikey.VAK-1.developer.app.partner-id ke header tersebut.

<HTTPModifier name="HM-add-headers-1">
  <Add>
    <Headers>
      <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header>
    </Headers>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<QueryParams> (turunan dari <Add>)

Menambahkan parameter kueri baru ke permintaan. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <QueryParam>
Elemen Induk <Add>
Elemen Turunan <QueryParam>

Elemen <QueryParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Add>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Add>
</HTTPModifier>

Contoh 1

Contoh berikut menambahkan parameter kueri myParam ke permintaan dan menetapkan nilai 42 ke permintaan tersebut:

<HTTPModifier name="HM-add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Anda hanya dapat menggunakan <QueryParams> jika kriteria berikut terpenuhi:

  • Kata kerja HTTP: GET, POST
  • Jenis pesan: Permintaan

Selain itu, Anda hanya dapat menetapkan parameter kueri jika atribut type milik elemen <AssignTo> merupakan pesan permintaan. Menetapkannya dalam respons tidak akan berpengaruh.

Jika Anda menentukan array parameter kueri kosong dalam kebijakan Anda (<Add><QueryParams/></Add>), kebijakan tersebut tidak akan menambahkan parameter kueri apa pun. Ini sama dengan menghilangkan <QueryParams>.

<AssignTo>

Menentukan objek tempat kebijakan HTTPModifier beroperasi. Opsinya adalah:

  • Pesan permintaan: request yang diterima oleh proxy API
  • Pesan respons: response yang ditampilkan dari server target
  • Pesan kustom: Objek permintaan atau respons kustom

Perhatikan bahwa dalam beberapa kasus, Anda tidak dapat mengubah objek tempat kebijakan HTTPModifier bertindak. Misalnya, Anda tidak dapat menggunakan <Add> atau <Set> untuk menambahkan atau mengubah parameter kueri (<QueryParams>) atau parameter formulir (<FormParams>) pada respons. Anda hanya dapat memanipulasi parameter kueri dan parameter formulir berdasarkan permintaan.

Nilai Default T/A
Wajib? Opsional
Type String
Elemen Induk <HTTPModifier>
Elemen Turunan Tidak ada

Jika Anda tidak menentukan <AssignTo>, atau jika Anda menentukan elemen <AssignTo> tetapi tidak menentukan nilai teks untuk elemen tersebut, kebijakan akan bertindak pada permintaan atau respons default, yang didasarkan pada tempat kebijakan dijalankan. Jika dijalankan dalam alur permintaan, kebijakan akan memengaruhi pesan permintaan. Jika dijalankan di alur respons, kebijakan akan memengaruhi respons secara default.

Elemen <AssignTo> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">DESTINATION_VARIABLE_NAME</AssignTo>
</HTTPModifier>

Contoh 1

Contoh berikut tidak menetapkan pesan dalam teks <AssignTo>. Hal ini menyiratkan bahwa kebijakan akan bertindak pada pesan request atau response, bergantung pada tempat kebijakan dijalankan.

<HTTPModifier name="assignto-1">
  <AssignTo createNew="false" transport="http" type="request"/>
  ...
</HTTPModifier>

Jika Anda menentukan createNew="false", dan tidak memberikan nama pesan secara eksplisit, atribut <AssignTo> lainnya tidak akan relevan. Dalam hal ini, Anda mungkin perlu menghilangkan elemen <AssignTo> sepenuhnya.

Contoh 2

Contoh berikut akan membuat objek permintaan baru, yang menimpa objek yang ada:

<HTTPModifier name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
  ...
</HTTPModifier>

Saat Anda membuat objek permintaan atau respons baru, elemen lain dari kebijakan HTTPModifier (seperti <Add> dan <Set>) akan bertindak pada objek permintaan baru tersebut.

Anda dapat mengakses objek permintaan baru dalam kebijakan lain nanti dalam alur tersebut, atau mengirim objek permintaan baru ke layanan eksternal dengan kebijakan ServiceCallout.

Contoh 3

Contoh berikut akan membuat objek permintaan baru bernama MyRequestObject:

<HTTPModifier name="assignto-3">
  <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
  ...
</HTTPModifier>

Saat Anda membuat objek permintaan atau respons baru, elemen lain dari kebijakan HTTPModifier (seperti <Add> dan <Set>) akan bertindak pada objek permintaan baru tersebut.

Anda dapat mengakses objek permintaan baru berdasarkan nama di kebijakan lain nanti dalam alur tersebut, atau mengirim objek permintaan baru ke layanan eksternal dengan kebijakan ServiceCallout.

Tabel berikut menjelaskan atribut <AssignTo>:

Atribut Deskripsi Wajib? Jenis
createNew

Menentukan apakah kebijakan ini membuat pesan baru saat menetapkan nilai.

Jika true, kebijakan akan membuat variabel baru dari jenis yang ditentukan oleh type (request atau response). Jika Anda tidak menentukan nama variabel baru, kebijakan akan membuat objek permintaan atau respons baru, berdasarkan nilai type.

Jika false, kebijakan akan merespons dengan salah satu dari dua cara berikut:

  • Jika <AssignTo> dapat me-resolve nama variabel menjadi permintaan atau respons, variabel tersebut akan melanjutkan pemrosesan. Misalnya, jika kebijakan berada dalam alur permintaan, variabelnya adalah objek permintaan. Jika kebijakan ini memicu respons, variabelnya adalah objek respons.
  • Jika <AssignTo> tidak dapat diselesaikan, atau di-resolve menjadi jenis non-pesan, kebijakan akan menampilkan error.

Jika createNew tidak ditentukan, kebijakan akan merespons dengan salah satu dari dua cara berikut:

  • Jika <AssignTo> di-resolve menjadi pesan, pemrosesan akan berlanjut ke langkah berikutnya.
  • Jika <AssignTo> tidak dapat diselesaikan, atau di-resolve menjadi jenis non-pesan, variabel jenis baru yang ditentukan dalam type akan dibuat.
Opsional Boolean
transport

Menentukan jenis transpor untuk jenis pesan permintaan atau respons.

Nilai defaultnya adalah http (satu-satunya nilai yang didukung).

Opsional String
type Menentukan jenis pesan baru, jika createNew adalah true. Nilai yang valid adalah request atau response.

Nilai defaultnya adalah request. Jika Anda menghapus atribut ini, Apigee akan membuat permintaan atau respons, bergantung pada alur yang dijalankan oleh kebijakan ini.

Opsional String

<DisplayName>

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama yang berbeda dan lebih alami.

Elemen <DisplayName> bersifat umum untuk semua kebijakan.

Nilai Default T/A
Wajib? Opsional. Jika Anda menghilangkan <DisplayName>, nilai atribut name kebijakan akan digunakan.
Jenis String
Elemen Induk <PolicyElement>
Elemen Turunan Tidak ada

Elemen <DisplayName> menggunakan sintaksis berikut:

Sintaksis

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

Contoh

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

Elemen <DisplayName> tidak memiliki atribut atau elemen turunan.

<IgnoreUnresolvedVariables>

Menentukan apakah pemrosesan berhenti ketika variabel yang belum terselesaikan ditemukan.

Nilai Default Salah
Wajib? Opsional
Type Boolean
Elemen Induk <HTTPModifier>
Elemen Turunan Tidak ada

Tetapkan ke true untuk mengabaikan variabel yang belum terselesaikan dan melanjutkan pemrosesan; jika tidak, tetapkan false. Nilai defaultnya adalah false.

Menetapkan <IgnoreUnresolvedVariables> ke true berbeda dengan menetapkan continueOnError <HTTPModifier> ke true karena kebijakan ini dikhususkan untuk menetapkan dan mendapatkan nilai variabel. Jika Anda menetapkan continueOnError ke true, Apigee akan mengabaikan semua error, bukan hanya error yang ditemukan saat menggunakan variabel.

Elemen <IgnoreUnresolvedVariables> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan <IgnoreUnresolvedVariables> ke true:

<HTTPModifier name="HM-Set-Headers">
  <Set>
    <Headers>
      <Header name='new-header'>{possibly-defined-variable}<Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</HTTPModifier>

Karena <IgnoreUnresolvedVariables> disetel ke true, jika variabel possibly-defined-variable tidak ditentukan, kebijakan ini tidak akan menampilkan kesalahan.

<Remove>

Menghapus header, parameter kueri, atau parameter formulir dari pesan. Tag kosong menghapus semua parameter terkait termasuk header, formparams, dan queryparams.

Pesan yang terpengaruh dapat berupa permintaan atau respons. Anda menentukan pesan mana yang ditindaklanjuti oleh <Remove> menggunakan elemen <AssignTo>.

Nilai Default T/A
Wajib? Opsional
Type Jenis kompleks
Elemen Induk <HTTPModifier>
Elemen Turunan <FormParams>
<Headers>
<QueryParams>

Kasus penggunaan umum untuk <Remove> adalah menghapus header atau parameter kueri yang berisi informasi sensitif dari objek permintaan masuk, agar tidak diteruskan ke server backend.

Elemen <Remove> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Contoh 1

Contoh berikut menghapus semua parameter formulir dan parameter kueri dari objek request:

<HTTPModifier name="HM-remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut menghapus semuanya dari objek pesan:

<HTTPModifier name="HM-remove-3">
  <Remove/>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Biasanya, Anda hanya akan melakukan ini jika akan menggunakan elemen <Set> untuk menetapkan beberapa nilai pengganti ke dalam pesan.

<FormParams> (turunan dari <Remove>)

Menghapus parameter formulir yang ditentukan dari permintaan. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <FormParam> atau array kosong
Elemen Induk <Remove>
Elemen Turunan <FormParam>

Elemen <FormParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all FormParams (<FormParams/>) -->
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Remove>
</HTTPModifier>

Contoh 1

Contoh berikut menghapus tiga parameter formulir dari permintaan:

<HTTPModifier name="HM-remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut menghapus semua parameter formulir dari permintaan:

<HTTPModifier name="HM-remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 3

Jika ada beberapa parameter formulir dengan nama yang sama, gunakan sintaksis berikut:

<HTTPModifier name="HM-remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh ini menghapus f1, f2, dan nilai kedua f3. Jika f3 hanya memiliki satu nilai, nilai tersebut tidak akan dihapus.

Anda hanya dapat menggunakan <FormParams> jika kriteria berikut terpenuhi:

  • Jenis pesan: Permintaan
  • Content-Type: application/x-www-form-urlencoded

<Headers> (turunan dari <Remove>)

Menghapus header HTTP yang ditentukan dari permintaan atau respons, yang ditentukan oleh elemen <AssignTo>.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <Header> atau array kosong
Elemen Induk <Remove>
Elemen Turunan <Header>

Elemen <Headers> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all Headers (<Headers/>) -->
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Remove>
</HTTPModifier>

Contoh 1

Contoh berikut menghapus header user-agent dari permintaan:

<HTTPModifier name="HM-remove-one-header">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut menghapus semua header dari permintaan:

<HTTPModifier name="HM-remove-all-headers">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 3

Jika ada beberapa header dengan nama yang sama, gunakan sintaksis berikut:

<HTTPModifier name="HM-remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh ini menghapus h1, h2, dan nilai kedua h3 dari permintaan. Jika h3 hanya memiliki satu nilai, nilai tersebut tidak akan dihapus.

<QueryParams> (turunan dari <Remove>)

Menghapus parameter kueri yang ditentukan dari permintaan. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <QueryParam> atau array kosong
Elemen Induk <Remove>
Elemen Turunan <QueryParam>

Elemen <QueryParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <!-- Can also be empty to remove everything from the message (<Remove/>) -->
  <Remove>
    <!-- Can also be an empty array to remove all QueryParams (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Remove>
</HTTPModifier>

Contoh 1

Contoh berikut menghapus satu parameter kueri dari permintaan:

<HTTPModifier name="HM-remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Contoh berikut menghapus semua parameter kueri dari permintaan:

<HTTPModifier name="HM-remove-queryparams-2">
  &tl;Remove>
      <QueryParams/>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 3

Jika ada beberapa parameter kueri dengan nama yang sama, gunakan sintaksis berikut:

<HTTPModifier name="HM-remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh ini menghapus qp1, qp2, dan nilai kedua qp3 dari permintaan. Jika qp3 hanya memiliki satu nilai, nilai tersebut tidak akan dihapus.

Contoh 4

Contoh berikut menghapus parameter kueri apikey dari permintaan:

<HTTPModifier name="HM-remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Anda hanya dapat menggunakan <QueryParams> jika kriteria berikut terpenuhi:

  • Kata kerja HTTP: GET, POST
  • Jenis pesan: Permintaan

<Set>

Menetapkan informasi dalam pesan permintaan atau respons, yang ditentukan oleh elemen <AssignTo>. <Set> menimpa header atau parameter kueri atau formulir yang sudah ada dalam pesan asli, atau menambahkan yang baru jika belum ada.

Header dan parameter kueri serta formulir dalam pesan HTTP dapat memiliki beberapa nilai. Untuk menambahkan nilai tambahan bagi header atau parameter, gunakan elemen <Add>.

Nilai Default T/A
Wajib? Opsional
Type Jenis kompleks
Elemen Induk <HTTPModifier>
Elemen Turunan <FormParams>
<Headers>
<Path>
<QueryParams>
<StatusCode>
<Verb>
<Version>

Elemen <Set> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
    <Path>PATH</Path>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Contoh

Contoh berikut menetapkan header tertentu. Jika disertakan dalam alur Permintaan, kebijakan ini akan mengizinkan sistem upstream menerima header tambahan yang tidak disertakan dalam permintaan masuk asli.

<HTTPModifier name="HM-Set-Header">
  <Set>
    <Headers>
        <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header>
    </Headers>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

<FormParams> (turunan dari <Set>)

Menimpa parameter formulir yang ada pada permintaan dan menggantinya dengan nilai baru yang Anda tentukan dengan elemen ini. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <FormParam>
Elemen Induk <Set>
Elemen Turunan <FormParam>

Elemen <FormParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <FormParams>
      <FormParam name="FORMPARAM_NAME">FORMPARAM_VALUE</FormParam>
      ...
    </FormParams>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan parameter formulir yang disebut myparam ke nilai variabel request.header.myparam dalam permintaan kustom baru:

<HTTPModifier name="HM-set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
  <AssignTo createNew="true" transport="http" type="request>>MyCustomRequest</AssignTo>
</HTTPModifier>

Anda hanya dapat menggunakan <FormParams> jika kriteria berikut terpenuhi:

  • Kata kerja HTTP: POST
  • Jenis pesan: Permintaan

Jika Anda menentukan parameter bentuk kosong dalam kebijakan Anda (<Add><FormParams/></Add>), kebijakan tersebut tidak akan menambahkan parameter formulir apa pun. Ini sama dengan menghilangkan <FormParams>.

<Set> mengubah Content-Type pesan menjadi application/x-www-form-urlencoded sebelum mengirimkannya ke endpoint target.

<Headers> (turunan dari <Set>)

Menimpa header HTTP yang ada dalam permintaan atau respons, yang ditetapkan oleh elemen <AssignTo>.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <Header>
Elemen Induk <Set>
Elemen Turunan <Header>

Elemen <Headers> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Headers>
      <Header name="HEADER_NAME">HEADER_VALUE</Header>
      ...
    </Headers>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan header x-ratelimit-remaining ke nilai variabel ratelimit.Quota-1.available.count:

<HTTPModifier name="HM-Set-RateLimit-Header">
  <Set>
    <Headers>
      <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header>
    </Headers>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Jika Anda menentukan header kosong dalam kebijakan (<Set><Headers/></Set>), kebijakan tidak akan menyetel header apa pun. Tindakan ini akan memiliki efek yang sama dengan menghilangkan <Headers>.

<Path> (turunan dari <Set>)

<QueryParams> (turunan dari <Set>)

Timpa parameter kueri yang ada dalam permintaan dengan nilai baru. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type Array elemen <QueryParam>
Elemen Induk <Set>
Elemen Turunan <QueryParam>

Elemen <QueryParams> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <QueryParams>
      <QueryParam name="QUERYPARAM_NAME">QUERYPARAM_VALUE</QueryParam>
      ...
    </QueryParams>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan parameter kueri address ke nilai variabel request.header.address:

<HTTPModifier name="HM-set-queryparams-1">
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</HTTPModifier>

Anda hanya dapat menggunakan <QueryParams> jika kriteria berikut terpenuhi:

  • Kata kerja HTTP: GET, POST
  • Jenis pesan: Permintaan

Jika Anda menetapkan parameter kueri kosong dalam kebijakan Anda (<Set><QueryParams/></Set>), kebijakan ini tidak akan menetapkan parameter kueri apa pun. Ini sama dengan menghilangkan <QueryParams>.

<StatusCode> (turunan dari <Set>)

Menetapkan kode status pada respons. Elemen ini tidak berpengaruh pada permintaan.

Nilai Default '200' (jika atribut createNew <AssignTo> ditetapkan ke 'true')
Wajib? Opsional
Type String atau VARIABLE
Elemen Induk <Set>
Elemen Turunan Tidak ada

Elemen <StatusCode> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <StatusCode>HTTP_STATUS_CODE or {variable}</StatusCode>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan kode status sederhana:

<HTTPModifier name="HM-set-statuscode-404">
  <Set>
    <StatusCode>404<<StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Contoh 2

Konten <StatusCode> diperlakukan sebagai template pesan. Artinya, nama variabel yang digabungkan dalam tanda kurung kurawal akan diganti pada saat runtime dengan nilai variabel yang direferensikan, seperti yang ditunjukkan contoh berikut:

<HTTPModifier name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo>response</AssignTo>
</HTTPModifier>

Anda hanya dapat menggunakan <StatusCode> jika kriteria berikut terpenuhi:

  • Jenis pesan: Respons

<Verb> (turunan dari <Set>)

Menetapkan kata kerja HTTP pada permintaan. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type String atau VARIABLE
Elemen Induk <Set>
Elemen Turunan Tidak ada

Elemen <Verb> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan kata kerja sederhana pada permintaan:

<HTTPModifier name="HM-set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Contoh 2

Konten <Verb> diperlakukan sebagai template pesan. Artinya, nama variabel yang digabungkan dalam tanda kurung kurawal akan diganti pada saat runtime dengan nilai variabel yang direferensikan.

Contoh berikut menggunakan variabel untuk mengisi kata kerja:

<HTTPModifier name="HM-set-verb-to-dynamic-value">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Anda hanya dapat menggunakan <Verb> jika kriteria berikut terpenuhi:

  • Jenis pesan: Permintaan

<Version> (turunan dari <Set>)

Menetapkan versi HTTP pada permintaan. Elemen ini tidak berpengaruh pada respons.

Nilai Default T/A
Wajib? Opsional
Type String atau VARIABLE
Elemen Induk <Set>
Elemen Turunan Tidak ada

Elemen <Version> menggunakan sintaksis berikut:

Sintaksis

<HTTPModifier
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="POLICY_NAME" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</HTTPModifier>

Contoh 1

Contoh berikut menetapkan nomor versi ke 1.1:

<HTTPModifier name="HM-set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
</HTTPModifier>

Contoh 2

Kode berikut menggunakan variabel dalam tanda kurung kurawal untuk menetapkan nomor versi:

<HTTPModifier name="HM-set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo>request</AssignTo>
</HTTPModifier>

Konten <Version> diperlakukan sebagai template pesan. Artinya, nama variabel yang digabungkan dalam tanda kurung kurawal akan diganti pada saat runtime dengan nilai variabel yang direferensikan.

Anda hanya dapat menggunakan <Version> jika kriteria berikut terpenuhi:

  • Jenis pesan: Permintaan

Membuat pesan permintaan kustom

Anda dapat menggunakan HTTPModifier untuk membuat pesan permintaan kustom. Setelah membuat permintaan kustom, Anda dapat menggunakannya dengan cara berikut:

  • Mengakses variabelnya dalam kebijakan lain
  • Meneruskannya ke layanan eksternal

Untuk membuat pesan permintaan kustom, gunakan elemen <AssignTo> dalam kebijakan HTTPModifier Anda. Tetapkan createNew ke true dan tentukan nama pesan baru dalam isi elemen, seperti yang ditunjukkan contoh berikut:

<HTTPModifier name="assignto-3">
    <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo>
    ...
  </HTTPModifier>

Secara default, Apigee tidak melakukan apa pun pada pesan permintaan kustom. Setelah membuatnya, Apigee akan melanjutkan alur dengan permintaan asli. Untuk menggunakan permintaan kustom, tambahkan kebijakan yang menggunakan pesan permintaan tersebut dan secara eksplisit merujuk pesan permintaan yang baru dibuat dalam konfigurasi untuk kebijakan tersebut. Tindakan ini akan memungkinkan Anda meneruskan permintaan kustom ke endpoint layanan eksternal.

Contoh berikut membuat pesan permintaan kustom:

Contoh 1

Contoh berikut membuat objek permintaan kustom dengan HTTPModifier:

<HTTPModifier name="HTTPModifier-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</HTTPModifier>

Contoh ini:

  • Membuat objek pesan permintaan baru bernama MyCustomRequest.
  • Di MyCustomRequest, kebijakan ini:
    • Menetapkan parameter kueri address pada pesan kustom ke nilai parameter kueri addy permintaan masuk.
    • Menetapkan kata kerja HTTP ke GET.
  • Menetapkan <IgnoreUnresolvedVariables> ke false. Ketika <IgnoreUnresolvedVariables> adalah false, jika salah satu variabel yang dirujuk dalam konfigurasi kebijakan tidak ada, Apigee akan memasuki fault state dalam alur API.

Contoh 2

Berikut adalah contoh lain yang menunjukkan cara membuat objek permintaan kustom dengan HTTPModifier:

<HTTPModifier name="HTTPModifier-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
  </Set>
</HTTPModifier>

Contoh ini membuat permintaan kustom baru bernama partner.request. Selanjutnya, kode ini akan menetapkan <Verb> pada permintaan baru.

Anda dapat mengakses berbagai properti pesan kustom dalam kebijakan HTTPModifier lain yang akan diterapkan nanti dalam alur. Contoh berikut mendapatkan nilai header dari respons kustom bernama, dan menempatkannya ke header baru dalam pesan permintaan:

<HTTPModifier name="HM-Set-Header">
  <AssignTo>request</AssignTo>
  <Set>
    <Headers>
      <Header name="injected-approval-id">{MyCalloutResponse.header.approval-id}</Header>
    </Headers>
  </Set>
</HTTPModifier>

Kode error

Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Penyebab Perbaikan
entities.UnresolvedVariable 500 Variabel Template Pesan dalam Tidak ditentukan atau di luar cakupan.
steps.httpmodifier.InvalidStatusCode 500 Nilai kode status yang diselesaikan tidak valid. Lihat string fault untuk mengetahui informasi selengkapnya.

Error saat deployment

Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.

Nama error Penyebab Perbaikan
InvalidIndex Jika indeks yang ditentukan dalam elemen <Remove> kebijakan HTTPModifier adalah 0 atau angka negatif, deployment Proxy API akan gagal.

Variabel kesalahan

Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.

Variabel Dari mana Contoh
httpmodifier.POLICY_NAME.failed POLICY_NAME adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. httpmodifier.HM-SetResponse.failed = true

Contoh respons error

{
   "fault":{
      "detail":{
         "errorcode":"steps.httpmodifier.InvalidStatusCode"
      },
      "faultstring":"HTTPModifier[HM-SetResponse]: Invalid status code bad_request"
   }
}

Contoh aturan kesalahan

<FaultRule name="HTTPModifier Faults">
    <Step>
        <Name>HM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "InvalidStatusCode")</Condition>
    </Step>
    <Condition>(httpmodifier.failed = true)</Condition>
</FaultRule>

Skema

Setiap jenis kebijakan ditentukan oleh skema XML (.xsd). Untuk referensi, skema kebijakan tersedia di GitHub.