Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Apa
Kebijakan AssignMessage mengubah atau membuat pesan permintaan dan respons baru selama Flow proxy API. Kebijakan ini memungkinkan Anda melakukan tindakan berikut pada pesan tersebut:
- Menambahkan parameter formulir, header, atau parameter kueri baru ke pesan
- Menyalin properti yang ada dari satu pesan ke pesan lain
- Menghapus header, parameter kueri, parameter formulir, dan/atau payload pesan dari pesan
- Menetapkan nilai properti yang ada dalam pesan
Dengan kebijakan AssignMessage, Anda biasanya menambahkan, mengubah, atau menghapus properti permintaan atau respons. Namun, Anda juga dapat menggunakan kebijakan AssignMessage untuk membuat pesan permintaan atau respons kustom dan meneruskannya ke target alternatif, seperti yang dijelaskan dalam Membuat pesan permintaan kustom.
Kasus penggunaan
Ada banyak situasi yang menyebabkan Anda mungkin ingin mengubah pesan permintaan atau respons selama pemrosesan oleh Apigee Edge. Contoh:
- Tentukan nilai default untuk parameter string kueri atau jenis input lainnya.
- Menghapus header HTTP dari pesan permintaan sebelum pesan diteruskan ke layanan backend.
- Tambahkan header HTTP sebelum respons dikirim ke aplikasi konsumen.
- Menyisipkan konten pesan JSON atau XML sebelum respons dikirim.
- Membuat pesan permintaan atau respons yang lengkap. Misalnya, Anda dapat menggunakan kebijakan ServiceCallout untuk memanggil API jarak jauh dari proxy API. Anda dapat menggunakan kebijakan AssignMessage untuk membuat pesan permintaan kustom dan menetapkannya ke variabel. Kemudian, gunakan Panggilan Layanan untuk mengirim pesan tersebut ke API jarak jauh.
- Tambahkan header ke permintaan dan respons untuk proses debug dan pemecahan masalah.
Kebijakan AssignMessage dapat membuat atau mengubah pesan atau variabel alur. Gunakan kebijakan ini untuk mengubah pesan permintaan sebelum mengirimkannya melalui proxy ke sistem upstream, atau untuk mengubah pesan respons sebelum meneruskannya ke aplikasi konsumen API.
Elemen <AssignMessage>
Menentukan kebijakan AssignMessage.
Nilai Default | Lihat tab Kebijakan Default di bawah |
Wajib? | Wajib |
Jenis | Objek kompleks |
Elemen Induk | t/a |
Elemen Turunan |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
Elemen <AssignMessage>
menggunakan sintaksis berikut:
Elemen <AssignMessage>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name " > <!-- All AssignMessage 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> <AssignVariable> <Name>variable_name </Name> <Ref>source_variable </Ref> <Template>message_template </Template> or <Template ref='template_variable '></Template> <Value>variable_value </Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name ">formparam_value </FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name ">header_value </Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name ">queryparam_value </QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name </DisplayName> <IgnoreUnresolvedVariables>[true|false] </IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name ">formparam_value </FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name ">header_value </Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<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> <Payload contentType="content_type " variablePrefix="prefix " variableSuffix="suffix ">new_payload </Payload> <QueryParams> <QueryParam name="queryparam_name ">queryparam_value </QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan AssignMessage ke alur di UI Edge:
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Saat Anda menyisipkan kebijakan AssignMessage baru di UI Edge, template berisi stub untuk semua
kemungkinan operasi. Biasanya, Anda memilih operasi yang ingin dilakukan dengan kebijakan ini
dan menghapus elemen turunan lainnya. Misalnya, jika Anda ingin melakukan operasi salin, gunakan
elemen <Copy>
dan hapus <Add>
, <Remove>
, dan 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 Secara opsional, gunakan elemen |
continueOnError |
false | Opsional | Tetapkan ke "false" untuk menampilkan error saat kebijakan gagal. Hal ini wajar untuk sebagian besar kebijakan. Tetapkan ke "true" agar eksekusi flow berlanjut meskipun kebijakan gagal. |
enabled |
benar | Opsional | Tetapkan ke "true" untuk menerapkan kebijakan. Tetapkan ke "false" untuk "menonaktifkan" kebijakan. Kebijakan ini tidak akan diterapkan meskipun tetap dilampirkan ke flow. |
async |
false | Tidak digunakan lagi | Atribut ini tidak digunakan lagi. |
Tabel berikut memberikan deskripsi umum tentang elemen turunan
<AssignMessage>
:
Elemen Turunan | Wajib? | Deskripsi |
---|---|---|
Operasi umum | ||
<Add> |
Opsional | Menambahkan informasi ke objek pesan yang ditentukan oleh
elemen <AssignTo> .
|
<Copy> |
Opsional | Menyalin informasi dari pesan yang ditentukan oleh atribut source
ke objek pesan yang ditentukan oleh elemen <AssignTo> . |
<Remove> |
Opsional | Menghapus elemen tertentu dari variabel pesan yang ditentukan dalam
elemen <AssignTo> . |
<Set> |
Opsional | Mengganti nilai properti yang ada pada permintaan atau respons, yang ditentukan oleh
elemen <AssignTo> .
|
Elemen turunan lainnya | ||
<AssignTo> |
Opsional | Menentukan pesan mana yang dioperasikan oleh kebijakan AssignMessage. Ini dapat berupa permintaan atau respons standar, atau dapat berupa pesan kustom baru. |
<AssignVariable> |
Opsional | Menetapkan nilai ke variabel alur. Jika variabel tidak ada, maka
<AssignVariable> akan membuatnya. |
<IgnoreUnresolvedVariables> |
Opsional | Menentukan apakah pemrosesan berhenti saat variabel yang belum diselesaikan ditemukan. |
Setiap elemen turunan ini dijelaskan di bagian selanjutnya.
Contoh
Contoh berikut menunjukkan beberapa cara Anda dapat menggunakan kebijakan AssignMessage:
Contoh berikut menambahkan header ke permintaan dengan elemen
<Add>
:
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Contoh berikut menghapus payload dari respons dengan elemen <Remove>
:
<AssignMessage name="AM-remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo>response</AssignTo> </AssignMessage>
Contoh berikut mengubah objek respons yang ada dengan menambahkan header ke objek tersebut:
<AssignMessage name="AM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false </IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </AssignMessage>
Contoh ini tidak membuat pesan baru. Sebagai gantinya, pesan ini mengubah 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 diubah oleh kebijakan Assign Message ini berisi header HTTP yang menunjukkan apakah hasil telah ditarik dari cache atau tidak. Menetapkan header dalam respons dapat berguna untuk proses debug dan pemecahan masalah.
Anda dapat menggunakan Tetapkan Pesan untuk menyematkan konten dinamis dalam payload respons dan pesan permintaan.
Untuk menyematkan variabel alur Edge dalam payload XML, gabungkan variabel yang ditentukan dalam tanda kurung
kurawal, seperti ini: {prefix.name}
.
Contoh berikut menyematkan nilai variabel alur header HTTP user-agent
dalam elemen XML yang disebut User-agent
:
<AssignMessage name="AM-set-dynamic-content"> <AssignTo>response</AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false </IgnoreUnresolvedVariables> </AssignMessage>
Untuk payload JSON, Anda dapat menyisipkan variabel menggunakan atribut variablePrefix
dan variableSuffix
dengan karakter pembatas seperti yang ditunjukkan dalam contoh berikut:
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
Untuk mengetahui daftar lengkap variabel alur, lihat Referensi variabel alur.
Mulai rilis cloud 16.08.17, Anda juga dapat menggunakan kurung kurawal untuk menyisipkan variabel.
Contoh berikut menghapus parameter kueri apikey
dari permintaan:
<AssignMessage name="AM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Praktik terbaiknya adalah menghapus parameter kueri apikey
dari pesan
permintaan saat Anda menggunakan kebijakan VerifyAPIKey untuk autentikasi pengguna. Anda melakukannya untuk mencegah
informasi kunci sensitif diteruskan ke target backend.
Contoh berikut menggunakan tiga kebijakan Tetapkan Pesan:
- Membuat tiga variabel alur dalam permintaan, dengan nilai statis
- Mendapatkan variabel alur secara dinamis dalam kebijakan kedua di alur permintaan
- Menetapkannya dalam payload respons
<!-- Policy #1: Set variables in the request --> <AssignMessage name="AM-set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> </AssignMessage>
Dalam kebijakan pertama, elemen <AssignVariable>
membuat dan menetapkan tiga
variabel dalam permintaan. Setiap elemen <Name>
menentukan
nama variabel, dan <Value>
menentukan nilai.
Kebijakan kedua menggunakan elemen <AssignVariable>
untuk membaca nilai dan membuat tiga
variabel baru:
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
Dalam kebijakan kedua, elemen <Ref>
mereferensikan variabel sumber,
dan elemen <Name>
menentukan nama variabel baru. Jika variabel yang dirujuk oleh elemen <Ref>
tidak dapat diakses, Anda dapat menggunakan nilai yang ditentukan oleh elemen <Value>
.
Untuk mencoba kumpulan kebijakan ini:
- Tambahkan kebijakan #1 dan #2 ke alur permintaan. Pastikan untuk menempatkan kebijakan #1 sebelum kebijakan #2.
- Tambahkan kebijakan ketiga dalam alur respons.
- Kebijakan ketiga menggunakan elemen
<Set>
untuk menambahkan variabel ke respons. Contoh berikut membuat payload XML dalam respons yang ditampilkan Edge ke klien:<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Perhatikan bahwa sintaksis untuk mengakses variabel alur di
<Set>
adalah dengan menyertakannya dalam kurung kurawal.Pastikan untuk menyetel atribut
contentType
elemen<Payload>
ke "application/xml". - Kirim permintaan ke proxy API Anda; misalnya:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Jika ingin, Anda dapat menyalurkan hasil melalui utilitas seperti
xmllint
sehingga XML ditampilkan dalam struktur yang diformat dengan baik:curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
Isi respons akan terlihat seperti berikut:
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
Dalam contoh berikut, misalkan kebijakan ServiceCallout ada dalam permintaan proxy API,
dan respons callout berisi beberapa header dengan nama yang sama
(Set-Cookie
). Dengan asumsi variabel respons Service Callout adalah calloutResponse
default, kebijakan berikut akan mendapatkan nilai header Set-Cookie
kedua.
<AssignMessage name="AM-Payload-from-SC-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </AssignMessage>
Untuk mencantumkan semua nilai header, gunakan variabel berikut:
{calloutResponse.header.Set-Cookie.values}
Setiap elemen turunan dalam referensi ini memiliki contoh tambahan. Untuk contoh lainnya, lihat contoh AssignMessage di GitHub.
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan <AssignMessage>
.
<Add>
Menambahkan informasi ke permintaan atau respons, yang ditentukan oleh elemen <AssignTo>
.
Elemen <Add>
menambahkan properti baru pada pesan yang tidak ada di pesan asli. Untuk mengubah nilai properti yang ada, gunakan elemen
<Set>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <QueryParams> |
Elemen <Add>
menggunakan sintaksis berikut:
<AssignMessage 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> </AssignMessage>
Contoh berikut menggunakan elemen <FormParams>
untuk mendapatkan nilai
tiga parameter string kueri dari permintaan awal dan menetapkannya sebagai parameter formulir pada
permintaan endpoint target:
<AssignMessage name="AM-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> </AssignMessage>
Contoh berikut menggunakan elemen <Headers>
untuk menambahkan
header partner-id
ke permintaan yang akan dikirim ke endpoint target:
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Contoh berikut menggunakan elemen <QueryParams>
untuk menambahkan satu parameter
kueri dengan nilai statis ke permintaan:
<AssignMessage name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Contoh ini menggunakan <Add>
dalam preflow permintaan. Jika Anda melihat hasilnya di alat
seperti alat Trace, permintaan ke https://example-target.com/get
akan menjadi
https://example-target.com/get?myParam=42
.
Elemen turunan <Add>
mendukung penggantian string dinamis, yang dikenal sebagai
template pesan.
<FormParams>
(anak dari <Add>
)
Menambahkan parameter formulir baru ke pesan permintaan. Elemen ini tidak memengaruhi pesan respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
<AssignMessage 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> </AssignMessage>
Contoh berikut menambahkan satu parameter formulir ("answer") dan nilai statis ("42") ke permintaan:
<AssignMessage name="AM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Contoh berikut mendapatkan nilai parameter kueri name
dan
menambahkannya ke permintaan sebagai parameter formulir, lalu menghapus parameter kueri:
<AssignMessage name="AM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> <Remove> <QueryParam name="name"/> </Remove> </AssignMessage>
Perhatikan bahwa contoh ini tidak menentukan target dengan <AssignTo>
. Kebijakan ini hanya menambahkan parameter
ke permintaan.
Contoh berikut menambahkan beberapa parameter formulir ke permintaan:
<AssignMessage name="AM-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> </AssignMessage>
Contoh ini mendapatkan parameter string kueri dari permintaan awal dan menambahkannya sebagai parameter formulir dengan nama yang berbeda. Kemudian, parameter kueri asli akan dihapus. Apigee akan mengirimkan permintaan yang telah diubah ke endpoint target.
Anda dapat menggunakan alat Pelacakan untuk melihat alurnya. Anda akan melihat bahwa isi permintaan berisi data formulir yang dienkode ke URL, yang awalnya diteruskan sebagai parameter string kueri:
username=nick&zip_code=90210&default_language=en
Anda dapat menggunakan <FormParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Permintaan
- Salah satu (atau kedua) hal berikut:
- Data formulir: Ditetapkan ke beberapa nilai, atau "" (string kosong). Misalnya, dengan
curl
, tambahkan-d ""
ke permintaan Anda. - header
Content-Length
: Setel ke 0 (jika tidak ada data dalam permintaan asli; jika tidak, panjang saat ini, dalam byte). Misalnya, dengancurl
, tambahkan-H "Content-Length: 0"
ke permintaan Anda.
- Data formulir: Ditetapkan ke beberapa nilai, atau "" (string kosong). Misalnya, dengan
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>
, Edge akan menyetel header Content-Type
permintaan ke
"application/x-www-form-urlencoded" sebelum mengirim pesan ke layanan target.
<Headers>
(anak dari <Add>
)
Menambahkan header baru ke permintaan atau respons yang ditentukan, yang ditentukan oleh
elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <Header> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name " > <Add> <Headers> <Header name="header_name ">header_value </Header> ... </Headers> </Add> </AssignMessage>
Contoh berikut menambahkan header partner-id
ke pesan permintaan, dan
menetapkan nilai variabel alur verifyapikey.VAK-1.developer.app.partner-id
ke header tersebut.
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
<QueryParams>
(anak dari <Add>
)
Menambahkan parameter kueri baru ke permintaan. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name " > <Add> <QueryParams> <QueryParam name="queryparam_name ">queryparam_value </QueryParam> ... </QueryParams> </Add> </AssignMessage>
Contoh berikut menambahkan parameter kueri "myParam" ke permintaan dan menetapkan nilai "42" ke parameter tersebut:
<AssignMessage name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Anda dapat menggunakan <QueryParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
Selain itu, Anda hanya dapat menetapkan parameter kueri jika atribut type
elemen
<AssignTo>
adalah pesan permintaan. Menyetelnya pada respons tidak akan berpengaruh.
Jika Anda menentukan array parameter kueri kosong dalam kebijakan
(<Add><QueryParams/></Add>
), kebijakan tidak akan menambahkan parameter
kueri apa pun. Ini sama dengan menghilangkan <QueryParams>
.
<AssignTo>
Menentukan objek mana yang dioperasikan oleh kebijakan AssignMessage. 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 AssignMessage 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 pada permintaan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignMessage>
|
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 berdasarkan permintaan atau respons default, yang didasarkan pada tempat kebijakan dijalankan. Jika kebijakan dijalankan dalam alur permintaan, kebijakan tersebut akan memengaruhi pesan permintaan. Jika dijalankan dalam alur respons, kebijakan akan memengaruhi respons secara default.
Elemen <AssignTo>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name " > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name </AssignTo> </AssignMessage>
Contoh berikut menentukan bahwa target adalah permintaan asli yang akan dikirim ke endpoint target:
<AssignMessage name="assignto-1"> <!-- DO NOT do this --> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh berikut membuat objek permintaan baru:
<AssignMessage name="AM-assignto-2"> <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> </AssignMessage>
Saat Anda membuat objek permintaan atau respons baru, elemen kebijakan AssignMessage lainnya (seperti <Add>
, <Set>
, dan <Copy>
) akan bertindak pada objek
permintaan baru tersebut.
Anda dapat mengakses objek permintaan baru dalam kebijakan lain di alur nanti, atau mengirim objek permintaan baru ke layanan eksternal dengan kebijakan ServiceCallout.
Contoh berikut membuat objek permintaan baru bernama "MyRequestObject":
<AssignMessage name="assign>to-<2" AssignTo createNew="true" transport=&"http" ty&pe="req>u<est"gt;My>RequestObjectlt;/AssignTo /AssignMessage
Saat Anda membuat objek permintaan atau respons baru, elemen kebijakan AssignMessage lainnya (seperti <Add>
, <Set>
, dan <Copy>
) akan bertindak pada objek
permintaan baru tersebut.
Anda dapat mengakses objek permintaan baru dalam kebijakan lain di alur nanti, 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 Jika "false", kebijakan akan merespons dengan salah satu dari dua cara:
Jika
|
Opsional | Boolean |
transport |
Menentukan jenis transportasi 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".
Jika Anda menghilangkan atribut ini, Edge akan membuat permintaan atau respons, bergantung pada tempat kebijakan ini dijalankan dalam alur. |
Opsional | String |
<AssignVariable>
Menetapkan nilai ke variabel alur. Jika variabel alur tidak ada, <AssignVariable>
akan membuatnya.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<Name> (wajib)<Ref> <Template> <Value> |
Nilai yang Anda tetapkan ke variabel alur dapat berupa salah satu dari berikut:
- String literal: Gunakan elemen turunan
<Value>
untuk menentukan nilai string literal bagi variabel alur. - Variabel alur: Gunakan elemen turunan
<Ref>
untuk menentukan nilai variabel alur yang ada untuk variabel alur tujuan. Untuk daftar lengkap variabel alur yang dapat digunakan sebagai sumber, lihat Referensi variabel alur. - Template pesan: Gunakan elemen turunan
<Template>
untuk menentukan template pesan yang akan diinterpolasi, untuk mendapatkan nilai yang akan ditempatkan ke dalam variabel alur tujuan.
Elemen <AssignVariable>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < >Namevariable_na <me/N>ame < Refso>urce_variable /Re<f Tem>platemessage<_template/Template or Te><mplate re>f=<9;tem>plate_variable <'/>Tem<plate Value>v<ariable_value/>Value /AssignVariable /AssignMessage
Gunakan elemen <Ref>
untuk menentukan variabel sumber. Jika
variabel yang dirujuk oleh <Ref>
tidak dapat diakses, Edge akan menggunakan nilai
yang ditentukan oleh elemen <Value>
. Jika Anda menentukan
<Template>
, elemen tersebut akan lebih diprioritaskan daripada elemen turunan lainnya.
Contoh berikut menetapkan nilai variabel baru, myvar
, ke nilai
literal "42":
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
Contoh berikut menetapkan nilai variabel alur
request.header.user-agent
ke variabel alur tujuan myvar
dan nilai parameter kueri country
ke variabel alur tujuan
Country
:
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
Jika salah satu penetapan gagal, Edge akan menetapkan nilai "ErrorOnCopy" ke variabel alur tujuan.
Jika variabel alur myvar
atau Country
tidak ada,
<AssignVariable>
akan membuatnya.
Contoh berikut menggunakan elemen turunan <Template>
untuk menggabungkan dua variabel konteks
dengan string literal (tanda hubung) di antaranya:
<AssignMessage name='AV-via-templat>e-1<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue >Template{system.uuid}-{me<ssageid}/>Tem<plate /Assign>V<ariable /Assig>nMessage
Penggunaan umum untuk <AssignVariable>
adalah untuk menetapkan nilai default untuk parameter kueri, header, atau
nilai lain yang dapat diteruskan dengan permintaan. Anda melakukannya dengan kombinasi elemen turunan
<Ref>
dan <Value>
. Untuk informasi selengkapnya, lihat contoh untuk <Ref>
.
<Name>
(anak dari <AssignVariable>
)
Menentukan nama variabel alur tujuan (misalnya, variabel yang nilainya ditetapkan oleh
kebijakan AssignMessage). Jika variabel yang disebutkan dalam <AssignVariable>
tidak ada, kebijakan akan membuat variabel dengan nama tersebut.
Nilai Default | t/a |
Wajib? | Wajib |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Elemen <Name>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble< Namevariab>l<e_name/Name >/AssignVariable /AssignMessage
Contoh berikut menentukan variabel tujuan sebagai myvar
, dan menyetelnya
ke nilai literal "42":
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
Jika myvar
tidak ada, <AssignVariable>
akan membuatnya.
<Ref>
(anak dari <AssignVariable>
)
Menentukan sumber penetapan sebagai variabel alur. Variabel alur dapat berupa salah satu variabel alur yang telah ditentukan sebelumnya (seperti yang tercantum dalam Referensi variabel alur), atau variabel alur kustom yang Anda buat.
Nilai <Ref>
selalu ditafsirkan sebagai variabel alur; Anda tidak dapat
menentukan string literal sebagai
nilai. Untuk menetapkan nilai string literal, gunakan elemen <Value>
sebagai gantinya.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Saat Anda menentukan variabel alur dengan <Ref>
, hilangkan
tanda kurung "{}" yang biasanya Anda gunakan untuk mereferensikan variabel alur. Misalnya,
untuk menyetel nilai variabel baru Anda ke nilai variabel alur client.host
:
Do this (no brackets): <Ref>client.host</Ref> DoNOT do this (brackets): <Ref>{client.host}</Ref>
Untuk menentukan nilai default untuk variabel tujuan flow, gunakan <Value>
bersama dengan <Ref>
. Jika variabel alur yang ditentukan oleh
<Ref>
tidak ada, tidak dapat dibaca, atau bernilai null, Edge akan menetapkan nilai
<Value>
ke variabel alur tujuan.
Elemen <Ref>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < >Namevariable_na <me/N>ame< Refsource_>v<ariable/Ref >/AssignVariable /AssignMessage
Contoh berikut menetapkan nilai variabel alur
request.header.user-agent
ke variabel alur tujuan myvar
dan
nilai parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariab>le-<4" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-ag<ent/Ref /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>oun<try/Ref /Assi>g<nVariable /Ass>ignMessage
Dalam contoh ini, Edge tidak memiliki default (atau nilai penggantian) yang ditentukan untuk penugasan.
Contoh berikut menetapkan nilai variabel alur request.header.user-agent
ke variabel alur tujuan myvar
dan nilai
parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
Dalam contoh ini, jika nilai variabel alur request.header.user-agent
atau parameter kueri Country
bernilai null, tidak dapat dibaca, atau salah bentuk, Edge akan menetapkan
nilai "ErrorOnCopy" ke variabel baru.
Kasus penggunaan umum untuk <AssignVariable>
adalah menetapkan nilai default kueri
parameter, header, atau nilai lain yang dapat diteruskan dengan permintaan. Misalnya, Anda membuat
proxy API cuaca dengan permintaan yang menggunakan satu parameter kueri bernama "w". Parameter
ini berisi ID kota yang ingin Anda ketahui cuacanya. URL permintaan memiliki
format:
http://myCO.com/v1/weather/forecastrss?w=city_ID
Untuk menentukan nilai default untuk "w", buat kebijakan AssignMessage seperti berikut:
<AssignMessage continueOnError="false" enabled="true" nam>e=&<quot;assignvariable-3" AssignTo createNew="fals>e&q<uot; transport="http>" <type="request"/ > I<gnoreUnresolve>dVari<able>strue /IgnoreUnres<olved>Varia<ble>s AssignVariable < N>amere<quest>.querypa<ram.w/>Nam<e Refreques>t<.queryparam.w/>Ref Value12797282/Value /AssignVariable /AssignMessage
Dalam contoh ini, <AssignVariable>
mendapatkan nilai request.queryparam.w
dan menetapkannya ke dirinya sendiri. Jika variabel alur bernilai null, yang berarti parameter kueri "w" tidak
ada dalam permintaan, contoh ini akan menggunakan nilai default dari elemen
<Value>
. Oleh karena itu, Anda dapat membuat permintaan ke proxy API ini yang menghilangkan parameter kueri "w":
http://myCO.com/v1/weather/forecastrss
...dan tetap membuat proxy API menampilkan hasil yang valid.
Tidak seperti saat menggunakan <Value>
, nilai <Ref>
harus berupa
variabel alur, seperti properti objek request
, response
, atau
target
. Nilai juga dapat berupa variabel alur kustom yang Anda buat.
Jika Anda menentukan variabel alur yang tidak ada untuk nilai <Ref>
,
dan nilai <IgnoreUnresolvedVariables>
adalah "true", Edge akan menampilkan error.
<Template>
(anak dari <AssignVariable>
)
Menentukan template pesan. Template pesan memungkinkan Anda melakukan penggantian string variabel saat kebijakan dijalankan, dan dapat menggabungkan string literal dengan nama variabel yang diapit tanda kurung kurawal. Selain itu, template pesan mendukung fungsi seperti escaping dan konversi huruf.
Gunakan atribut ref
untuk menentukan variabel alur tempat nilai variabel
adalah template pesan. Misalnya, Anda dapat menyimpan template pesan sebagai
atribut kustom
di aplikasi developer. Saat Edge mengidentifikasi aplikasi developer setelah memverifikasi kunci API
atau token keamanan (melalui kebijakan tambahan), elemen <AssignVariable>
dapat menggunakan template pesan dari atribut kustom aplikasi, yang tersedia
sebagai variabel alur dari kebijakan keamanan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Elemen <Template>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e" >AssignVariabl <e Tem>platemessage<_template/Template or Te><mplate re>f=&<#39;template_va>r<iable'/Tem>plate /AssignVariable /AssignMessage
Contoh berikut menggunakan sintaksis pembuatan template pesan untuk menggabungkan dua variabel konteks dengan string literal (tanda hubung) di antaranya:
<AssignMessage name='AV-via-templat>e-1<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue >Template{system.uuid}-{me<ssageid}/>Tem<plate /Assign>V<ariable /Assig>nMessage
Contoh berikut menentukan variabel alur, dengan nilai variabel adalah template pesan yang telah ditentukan sebelumnya. Gunakan opsi ini jika Anda ingin menyisipkan template yang telah ditentukan sebelumnya saat runtime tanpa harus mengubah kebijakan:
<AssignMessage name='AV-via-template-indirec>tly&#<39; IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue Template ref='my_templat>e_v<ariable'/ > </AssignVariabl>e /AssignMessage
Contoh berikut menentukan variabel alur dan nilai teks. Dalam hal ini, jika
variabel yang dirujuk tidak null, nilai tersebut akan digunakan sebagai template. Jika nilai yang direferensikan adalah null, maka nilai teks (dalam hal ini, {system.uuid}-{messageid}
) akan digunakan sebagai template. Pola ini berguna untuk memberikan nilai "penggantian", yang
dalam beberapa kasus, Anda ingin mengganti template default (bagian teks) dengan nilai
yang ditetapkan secara dinamis. Misalnya, pernyataan kondisional dapat mengambil nilai
dari peta nilai kunci dan menetapkan variabel yang dirujuk ke nilai tersebut:
<AssignMessage name='AV-template-with-fallb>ack<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue Template ref='>my_variable'{system.u<uid}-{mes>sag<eid}/Template > </AssignVariabl>e /AssignMessage
<Value>
(anak dari <AssignVariable>
)
Menentukan nilai variabel flow tujuan yang ditetapkan dengan <AssignVariable>
. Nilai
selalu ditafsirkan sebagai string literal; Anda tidak dapat menggunakan variabel alur sebagai nilai, meskipun
Anda menyertakan nilai dalam tanda kurung ("{}"). Untuk menggunakan variabel alur, gunakan <Ref>
sebagai gantinya.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Jika digunakan bersama dengan elemen <Ref>
, <Value>
bertindak sebagai nilai default (atau penggantian). Jika <Ref>
tidak ditentukan, tidak dapat diselesaikan, atau null, nilai <Value>
akan digunakan.
Elemen <Value>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < Na>mevariable_nam <e/Name> < Valuevariable>_<value/Value >/AssignVariable /AssignMessage
Contoh berikut menetapkan nilai variabel flow tujuan, myvar
,
ke nilai literal "42":
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
Contoh berikut menetapkan nilai variabel alur
request.header.user-agent
ke variabel alur myvar
dan nilai
parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
Jika salah satu penetapan gagal, <AssignVariable>
akan menetapkan nilai "ErrorOnCopy" ke
variabel alur tujuan.
<Copy>
Menyalin nilai dari pesan yang ditentukan oleh atribut source
ke pesan yang ditentukan oleh elemen <AssignTo>
. Jika Anda tidak menentukan
target dengan <AssignTo>
, kebijakan ini akan menyalin nilai ke permintaan atau respons, bergantung pada tempat kebijakan ini dijalankan dalam alur.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Jika Anda tidak menentukan elemen turunan di bawah elemen <Copy>
, semua bagian
pesan sumber yang ditentukan akan disalin.
Elemen <Copy>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > name<="policy_name" Co>py so<urce="[request|response]&qu<ot; !--> Can also <be an empt>y array< (FormParams/) --> FormP>arams For<mParam nam>e="formpar<am_name&quo>t;for<mparam_value/FormParam ...< /Fo>rmParams < !-- >Can als<o be an emptyarray (Hea d>ers/) --> < He>aders Hea<der name>=&quo<t;he>ader_name&qu<ot;he>ader_<value/H>eader <... >/Head<ers Path[false|true]/Path < Payload[fa>lse|true]/<Payload > !-- Ca<n also be an empty array (QueryPa>rams /) --> < QueryPara>ms QueryP<aram name=&q>uot;q<ueryparam_na>me"quer<yparam_value/>Query<Param > ... /Q<ueryParams<>/span> R<easo>nPhrase[fals<e|tru>e]/Re<asonPhr>ase Stat<usCode[f>als<e|tru>e]/<StatusCode Verb[false|true]/Verb< >
Version[f>als<e|true]/Version /Copy !-- Used as the destination for the Copy values -- A>ssignTo createNew="[<true|fals>e<]" transp>ort="http" type="[request|response]"destination_variable_name/AssignTo /AssignMessage
Contoh berikut menyalin header, tiga parameter formulir, jalur, dan semua parameter kueri
dari pesan request
ke permintaan kustom baru bernama newRequest
:
<AssignMessage name="AM-co>py-<1" AssignTo createNew="true" transport=&>quot;http&<quot; typ>e=&<quot;request"new>Reque<st/Assi>gnTo <Copy source="request&qu>ot; < Heade>rs < Header> name=&<quot;Header_Name_1"/ /Head>ers < FormParams FormParam name=&q>uot;For<m_Param_Name_1"/ FormPar>am na<me="Fo>rm_Pa<ram_>Name<_2&qu>ot;/ < FormPa>ram< name>=<"Form_Par>am_Name_3"/ /FormParams Pathtrue/Path QueryParams/ /Copy /AssignMessage
Karena elemen seperti <Payload>
dan <Verb>
tidak ada, kebijakan tidak menyalin bagian pesan tersebut.
Contoh berikut pertama-tama menghapus semua yang ada dalam pesan response
, lalu
menyalin semua nilai dari pesan lain yang disebut secondResponse
ke dalam
pesan response
:
<AssignMessage name='AM-Copy-Respo>nse<' AssignTo createNew="false" transport=&quo>t;http&q<uot; type>=&q<uot;response"response/AssignTo !>-- <first r>emo<ve any existing values -- Remove/ !-- then copy eve>ryt<hing from the designated mess>a<ge -- Copy s>ource="secondResponse"/ /AssignMessage
Elemen <Copy>
memiliki satu atribut:
Atribut | Deskripsi | Wajib? | Jenis |
---|---|---|---|
source |
Menentukan objek sumber salinan.
|
Opsional | String |
<FormParams>
(anak dari <Copy>
)
Menyalin parameter formulir dari permintaan yang ditentukan oleh
atribut source
elemen <Copy>
ke permintaan
yang ditentukan oleh elemen <AssignTo>
. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> atau array kosong |
Elemen Induk |
<Copy>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; !--> Can also <be an empt>y array< (FormParams/) --> FormP>arams For<mParam nam>e="formpar<am_name&quo>t;f<ormpa>r<am_value/FormP>aram ... /FormParams /Copy /AssignMessage
Contoh berikut menyalin satu parameter formulir dari permintaan ke permintaan kustom "MyCustomRequest":
<AssignMessage name="copy-formpara>ms-<1" Copy source>=&quo<t;request&>quot; < FormParams FormPa>ram name="par<amName&quo>t;For<m param val>ue <1/For>mPa<ram /FormParams /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
Contoh berikut menyalin semua parameter formulir ke permintaan kustom "MyCustomRequest":
<AssignMessage name="copy-formpara>ms-<2" Copy source>=&quo<t;request&q>uot<; > Fo<rmParams/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Contoh berikut menyalin tiga parameter formulir ke permintaan kustom "MyCustomRequest":
<AssignMessage name="copy-formpara>ms-<3" Copy source>=&quo<t;request&>quot; < FormParams FormPara>m name=<"paramName1"/ > FormP<aram name="paramName2&q>uot;/< Form>Par<am na>me=<"paramName3"/ /FormParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
Jika ada beberapa parameter formulir dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="copy-formpara>ms-<4" Copy source>=&quo<t;request&>quot; < FormParams >FormPar<am name="f1&quo>t;/ < FormParam name=&quo>t;f2&<quot;/ > F<ormPa>ram< name="f3.2"/ /FormParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
Contoh ini menyalin "f1", "f2", dan nilai kedua "f3". Jika "f3" hanya memiliki satu nilai, maka nilai tersebut tidak disalin.
Anda dapat menggunakan <FormParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Respons
- Salah satu (atau kedua) hal berikut:
- Data formulir: Ditetapkan 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. Misalnya, dengancurl
, tambahkan-H "Content-Length: 0"
ke permintaan Anda.
- Data formulir: Ditetapkan ke beberapa nilai, atau "" (string kosong). Misalnya, dengan
Saat Anda menyalin <FormParams>
, <Copy>
akan menetapkan Content-Type
pesan ke
"application/x-www-form-urlencoded" sebelum mengirim pesan ke layanan target.
<Headers>
(anak dari <Copy>
)
Menyalin header HTTP dari pesan permintaan atau respons yang ditentukan oleh
atribut source
elemen <Copy>
ke pesan permintaan
atau respons yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <Header> atau array kosong |
Elemen Induk |
<Copy>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; >!-- Can al<so be a>n empty< array (Headers /) --> >Headers < H>eader name=&quo<t;header>_na<me&qu>o<t;header_value>/Header ... /Headers /Copy /AssignMessage
Contoh berikut menyalin header user-agent
dari permintaan ke
objek permintaan kustom yang baru:
<AssignMessage name="copy-heade>rs-<1" Copy source>=&quo<t;reque>st"<; Headers Heade>r nam<e=">use<r-age>nt&<quot;/ /Headers /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
Untuk menyalin semua header, gunakan elemen <Headers>
kosong, seperti yang ditunjukkan
dalam contoh berikut:
<AssignMessage name="copy-heade>rs-<2" Copy source>=&quo<t;reques>t&q<uot;<>/span> < Headers/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Jika ada beberapa header dengan nama yang sama, gunakan sintaks berikut:
<AssignMessage name="copy-heade>rs-<3" Copy source>=&quo<t;reque>st"<; Headers > Head<er name="h1&>quot;/ < Header name=&>quot;<h2">/ < >Hea<der name="h3.2"/ /Headers /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
Contoh ini menyalin "h1", "h2", dan nilai kedua "h3". Jika "h3" hanya memiliki satu nilai, maka nilai tersebut tidak disalin.
<Path>
(anak dari <Copy>
)
Menentukan apakah jalur harus disalin dari permintaan sumber ke permintaan tujuan. Elemen ini tidak memengaruhi respons.
Jika "true", kebijakan ini menyalin jalur dari pesan permintaan yang ditentukan oleh
atribut source
elemen <Copy>
ke pesan
permintaan yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Path>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce>="[requ<est|r>esp<onse]>&<quot; Path>[false|true]/Path /Copy /AssignMessage
Contoh berikut menunjukkan bahwa kebijakan AssignMessage harus menyalin jalur dari permintaan sumber ke objek permintaan kustom yang baru:
<AssignMessage name="copy-pa>th-<1" Copy source>=&quo<t;re>ques<t&quo>t; < P>ath<true/Path /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Anda dapat menggunakan <Path>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<Payload>
(anak dari <Copy>
)
Menentukan apakah payload harus disalin dari sumber ke tujuan. Sumber dan tujuan dapat berupa permintaan atau respons.
Jika "true", kebijakan ini akan menyalin payload dari pesan yang ditentukan oleh
atribut source
elemen <Copy>
ke pesan yang
ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=&q>uot;[request<|respons>e]&<quot;> < Payload[fa>lse|true]/Payload /Copy /AssignMessage
Contoh berikut menetapkan <Payload>
ke "true" sehingga payload permintaan
disalin dari permintaan ke respons:
<AssignMessage name="AM-copy-paylo>ad-<1" Copy source>=&quo<t;reque>st&q<uot; > Pa<yload>tru<e/Payloa>d /Cop<y Assig>n<Toresponse/Ass>ignTo /AssignMessage
<QueryParams>
(anak dari <Copy>
)
Menyalin parameter string kueri dari permintaan yang ditentukan oleh
atribut source
elemen <Copy>
ke permintaan yang ditentukan
oleh elemen <AssignTo>
. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> atau array kosong |
Elemen Induk |
<QueryParam>
|
Elemen Turunan | Tidak ada |
Elemen <QueryParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; !-- >Can also b<e an empty >array (<QueryParams/) --> QueryPar>ams QueryP<aram name=&>quot;queryparam<_name"q>uer<ypara>m<_value/QueryPa>ram ... /QueryParams /Copy /AssignMessage
Contoh berikut menyalin parameter kueri "my_param" dari permintaan ke dalam objek permintaan kustom baru:
<AssignMessage name="copy-querypara>ms-<1" Copy source>=&quo<t;request&q>uot; < QueryParams QueryPa>ram n<ame="my>_pa<ram&q>uot<;/ /QueryParams /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
Contoh berikut menyalin semua parameter kueri dari permintaan ke dalam objek permintaan kustom baru:
<AssignMessage name="copy-querypara>ms-<2" Copy source>=&quo<t;request&qu>ot;< >Que<ryParams/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Jika ada beberapa parameter kueri dengan nama yang sama, gunakan sintaks berikut:
<AssignMessage name="copy-querypara>ms-<3" Copy source>=&quo<t;request&q>uot; < QueryParams Qu>eryPara<m name="qp1">/ < QueryParam name="q>p2&qu<ot;/ Q>uer<yPara>m n<ame="qp3.2"/ /QueryParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
Contoh ini menyalin "qp1", "qp2", dan nilai kedua "qp3". Jika "qp3" hanya memiliki satu nilai, maka nilai tersebut tidak disalin.
Anda dapat menggunakan <QueryParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
<ReasonPhrase>
(anak dari <Copy>
)
Menentukan apakah frasa alasan harus disalin dari respons sumber ke respons tujuan. Elemen ini tidak berpengaruh pada permintaan.
Jika "true", kebijakan ini akan menyalin ReasonPhrase
dari respons
yang ditentukan oleh atribut source
elemen <Copy>
ke respons
yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <ReasonPhrase>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[>request|resp<onse]" > <Reaso>n<Phrase[false|t>rue]/ReasonPhrase /Copy /AssignMessage
Contoh berikut menetapkan <ReasonPhrase>
ke true
. Dengan elemen sumber dan
<AssignTo>
seperti yang ditentukan, hal ini menyebabkan <Copy>
menyalin frasa alasan dari pesan respons bernama ke objek response
:
<AssignMessage name="AM-copy-reasonphra>se-<1" Copy source="serviceC>allou<tResponse&qu>ot; < ReasonPhr>ase<true/>Rea<sonPhras>e /Cop<y Assig>n<Toresponse/Ass>ignTo /AssignMessage
Anda hanya dapat menggunakan <ReasonPhrase>
jika pesan sumber dan tujuan berjenis Respons.
<StatusCode>
(anak dari <Copy>
)
Menentukan apakah kode status disalin dari respons sumber ke respons tujuan. Elemen ini tidak berpengaruh pada permintaan.
Jika "true", kebijakan ini menyalin kode status dari pesan respons yang ditentukan oleh
atribut source
elemen <Copy>
ke pesan respons
yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <StatusCode>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=">;[request|re<sponse]&quo>t; < S>t<atusCode[false>|true]/StatusCode /Copy /AssignMessage
Contoh berikut menetapkan <StatusCode>
ke "true", yang menyalin kode status
dari objek respons default ke objek respons kustom yang baru:
<AssignMessage name="copy-statusco>de-<1" Copy source=>"<;response&>quot<; Statu>sCo<detru>e/S<tatusCode /Copy AssignTo createNew="true" tr>ansport="ht<tp" >t<ype="resp>onse"MyCustomResponse/AssignTo /AssignMessage
Anda hanya dapat menggunakan <StatusCode>
jika pesan sumber dan tujuan berjenis Respons.
Penggunaan <StatusCode>
yang umum adalah untuk menyetel kode status respons proxy ke
nilai yang berbeda dari yang diterima dari target.
<Verb>
(anak dari <Copy>
)
Menentukan apakah kata kerja HTTP disalin dari permintaan sumber ke permintaan tujuan. Elemen ini tidak memengaruhi respons.
Jika "true", menyalin kata kerja yang ditemukan di atribut source
elemen <Copy>
ke permintaan yang ditentukan dalam elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Verb>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce>="[requ<est|r>esp<onse]>&<quot; Verb>[false|true]/Verb /Copy /AssignMessage
Contoh berikut menetapkan <Verb>
ke "true", yang menyalin kata kerja dari
permintaan default ke permintaan kustom baru:
<AssignMessage name="copy-ve>rb-<1" Copy source>=&quo<t;re>ques<t&quo>t; < V>erb<true/Verb /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Anda dapat menggunakan <Verb>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<Version>
(anak dari <Copy>
)
Menentukan apakah versi HTTP disalin dari permintaan sumber ke permintaan tujuan. Elemen ini tidak memengaruhi respons.
Jika "true", menyalin versi HTTP yang ditemukan di atribut source
elemen <Copy>
ke objek yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Version>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=&q>uot;[request<|respons>e]&<quot;> < Version[fa>lse|true]/Version /Copy /AssignMessage
Contoh berikut menetapkan <Version>
ke "true" pada permintaan, yang menyalin
versi dari objek permintaan default ke objek permintaan kustom baru:
<AssignMessage name="copy-versi>on-<1" Copy source>=&quo<t;reque>st&q<uot; > Ve<rsion>tru<e/Version /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Anda dapat menggunakan <Version>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<DisplayName>
Gunakan selain atribut name
untuk memberi label pada kebijakan di editor proxy UI pengelolaan dengan nama yang berbeda dan lebih terdengar alami.
Elemen <DisplayName>
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:
<PolicyElement> <DisplayName>policy_display_name </DisplayName> ... </PolicyElement>
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
Elemen <DisplayName>
tidak memiliki atribut atau elemen turunan.
<IgnoreUnresolvedVariables>
Menentukan apakah pemrosesan berhenti saat variabel yang belum diselesaikan ditemukan.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan | Tidak ada |
Setel ke true
untuk mengabaikan variabel yang belum diselesaikan dan melanjutkan pemrosesan; jika tidak
false
. Nilai defaultnya adalah false
.
Menetapkan <IgnoreUnresolvedVariables>
ke true
berbeda dengan menetapkan
<AssignMessage>
's continueOnError
ke true
karena khusus untuk
menetapkan dan mendapatkan nilai variabel. Jika Anda menyetel continueOnError
ke
true
, Edge akan mengabaikan semua error, bukan hanya error yang terjadi saat menggunakan
variabel.
Elemen <IgnoreUnresolvedVariables>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name">; IgnoreUnre<solvedVariables[true|false>]< /IgnoreUnre>solvedVariables /AssignMessage
Contoh berikut menetapkan <IgnoreUnresolvedVariables>
ke "true":
<AssignMessage name="AM-Set-Hea>der<s&q>uot; < Set > Head<ers Header name=&#>39;new-header'{possibly<-defin>ed-va<riable}H>ead<er > </Headers /Set IgnoreU>nresolv<edVariablestrue /IgnoreU>n<resolvedVariab>les /AssignMessage
Karena <IgnoreUnresolvedVariables>
disetel ke true
, jika
variabel possibly-defined-variable
tidak ditentukan, kebijakan ini tidak akan
menampilkan kesalahan.
<Remove>
Menghapus header, parameter kueri, parameter formulir, dan/atau payload pesan dari
pesan. Pesan dapat berupa permintaan atau respons. Anda menentukan pesan yang ditindaklanjuti oleh <Remove>
dengan menggunakan elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <Payload> <QueryParams> |
Kasus penggunaan umum untuk <Remove>
adalah menghapus parameter kueri atau header yang berisi informasi sensitif dari objek permintaan masuk, untuk menghindari pengirimannya ke server backend.
Elemen <Remove>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also >be an empt<y array (F>ormPara<ms/) -->FormParams >FormParam nam <e="fo>rmparam_name&qu<ot;formpara>m_val<ue/FormParam ... /Form<Params > !-- Can< also b>e an em<pty array (Headers /) --&g>t; Heade<rs > Header name=&<quot;hea>der_n<ame&quo>t;header_val<ue/Heade>r < ... /Headers Payload[<false|true]/>Payload < !-- Can a>lso be <an empty array (QueryParams /) --&>gt; QueryPar<ams Q>ueryParam name=<"queryp>ara<m_name&>q<uot;queryparam>_value/QueryParam ... /QueryParams /Remove /AssignMessage
Contoh berikut menghapus isi pesan dari respons:
<AssignMessage name="AM-remo>ve-<1" D>isplayNa<meremove-1/D>isp<layNam>e R<emove > P<ayloadtr>ue/<Payload> </Remove > Assign<Torespons>e</AssignTo /Ass>ignMessage
Dalam alur respons, kebijakan ini menghapus isi respons, hanya menampilkan header HTTP ke klien.
Contoh berikut menghapus semua parameter formulir dan parameter kueri dari
objek request
:
<AssignMessage name="AM-remo>ve-<2">; R<emove !<-- Empty (F>ormParams/) removes all form par>amete<rs -- F>ormPa<rams/ Q>ueryPar<ams QueryParam n>ame=&<quot;qp1&quo>t;/< /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
Contoh berikut menghapus semua hal dari objek pesan:
<AssignMessage name="AM-remo>ve-<3"> <Remove/ > Assig<nToreques>t</AssignTo /Ass>ignMessage
Biasanya, Anda hanya akan melakukannya jika akan menggunakan elemen <Set>
atau
elemen <Copy>
untuk menetapkan beberapa nilai pengganti dalam pesan.
<FormParams>
(anak dari <Remove>
)
Menghapus parameter formulir yang ditentukan dari permintaan. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also >be an empt<y array (F>ormPara<ms/) -->FormParams >FormParam nam <e="fo>rmparam_name&qu<ot;formpara>m_v<alue/Fo>r<mParam .>.. /FormParams /Remove /AssignMessage
Contoh berikut menghapus tiga parameter formulir dari permintaan:
<AssignMessage name="AM-remove-formpara>ms-<1">; R<emove >FormPar<ams FormParam name=">;form_p<aram_1"/ FormParam >name=&q<uot;form_param_2"/ >FormP<aram name=&>quo<t;form_>par<am_3&quo>t;/ < /FormPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
Contoh berikut menghapus semua parameter formulir dari permintaan:
<AssignMessage name="AM-remove-formpara>ms-<2">; R<emove F>orm<Params/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
Jika ada beberapa parameter formulir dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="AM-remove-formpara>ms-<3">; R<emove >FormPar<ams FormParam >name=&q<uot;f1"/ >FormPar<am name="f2">/ < FormPara>m n<ame=&qu>ot;<f3.2&quo>t;/ < /FormPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
Contoh ini menghapus "f1", "f2", dan nilai kedua "f3". Jika "f3" hanya memiliki satu nilai, maka nilai tersebut tidak akan dihapus.
Anda dapat menggunakan <FormParams>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(anak dari <Remove>
)
Menghapus header HTTP yang ditentukan dari permintaan atau respons, yang ditentukan oleh
elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <Header> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can al>so be an e<mpty ar>ray (He<aders/) -->; Header>s Head<er name>="header_n<ame">;he<ader_va>l<ue/Header > ... /Headers /Remove /AssignMessage
Contoh berikut menghapus header user-agent
dari permintaan:
<AssignMessage name="AM-remove-one-he>ade<r">; R<emove > Head<ers Header name=&qu>ot;us<er-agent>&qu<ot;/ > /<Headers > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
Contoh berikut menghapus semua header dari permintaan:
<AssignMessage name="AM-remove-all-hea>der<s">; R<emove > H<eaders/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
Jika ada beberapa header dengan nama yang sama, gunakan sintaks berikut:
<AssignMessage name="AM-remove-heade>rs-<3">; R<emove > Head<ers Header >name=&q<uot;h1"/ > Head<er name="h2&qu>ot;/ < He>ade<r name=>&qu<ot;h3.2&>quot;/ < /Head>e<rs /Remove > AssignTorequest/AssignTo /AssignMessage
Contoh ini menghapus "h1", "h2", dan nilai kedua "h3" dari permintaan. Jika "h3" hanya memiliki satu nilai, maka nilai tersebut tidak dihapus.
<Payload>
(anak dari <Remove>
)
Menentukan apakah <Remove>
menghapus payload dalam permintaan atau respons, yang
ditentukan oleh elemen <AssignTo>
. Tetapkan ke "true" untuk
menghapus payload; jika tidak, "false". Nilai defaultnya adalah "false".
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Remove>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_na>me" <Remove > <Payload>[<false|true]/Pa>yload /Remove /AssignMessage
Contoh berikut menyetel <Payload>
ke "true" sehingga payload permintaan
dihapus:
<AssignMessage name="AM-remove-paylo>ad-<1">; R<emove > P<ayloadtr>ue/<Payload> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
<QueryParams>
(anak dari <Remove>
)
Menghapus parameter kueri yang ditentukan dari permintaan. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also b>e an empty< array (Que>ryParam<s/) --> QueryParams >QueryParam name= <"query>param_name"<;queryparam_>val<ue/Quer>y<Param ..>. /QueryParams /Remove /AssignMessage
Contoh berikut menghapus satu parameter kueri dari permintaan:
<AssignMessage name="AM-remove-querypara>ms-<1">; Rem<ove Q>ueryParam<s QueryParam n>ame=&qu<ot;qp1">/ < /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
Contoh berikut menghapus semua parameter kueri dari permintaan:
<AssignMessage name="AM-remove-querypara>ms-<2">; Rem<ove Qu>ery<Params/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
Jika ada beberapa parameter kueri dengan nama yang sama, gunakan sintaks berikut:
<AssignMessage name="AM-remove-querypara>ms-<3">; Rem<ove Q>ueryParam<s QueryParam n>ame="<;qp1"/ Qu>eryParam <name="qp2"/ > Q<ueryParam na>me=<"q>p3.<2"/> </QueryPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
Contoh ini menghapus "qp1", "qp2", dan nilai kedua "qp3" dari permintaan. Jika "qp3" hanya memiliki satu nilai, maka nilai tersebut tidak akan dihapus.
Contoh berikut menghapus parameter kueri apikey
dari permintaan:
<AssignMessage name="AM-remove-query-p>ara<m">; R<emove Q>ueryPar<ams QueryParam name>=&quo<t;apikey&quo>t;/< /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
Anda dapat menggunakan <QueryParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
<Set>
Menetapkan informasi dalam pesan permintaan atau respons, yang ditentukan oleh
elemen <AssignTo>
. <Set>
menggantikan header atau
parameter kueri atau formulir yang sudah ada di pesan asli. Header dan parameter kueri serta formulir
dalam pesan HTTP dapat menyimpan beberapa nilai. Untuk menambahkan nilai tambahan untuk header atau parameter, gunakan elemen <Add>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Elemen <Set>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me"<; Set FormParams F>ormParam name=&<quot;formp>aram_name"<formparam_v>alue/<FormPar>am < ... /FormParams >Headers < Head>er name="h<eader_na>me&qu<ot;h> eade <r_val>ue/He<ader ... /Headers Pathpath/Path Payload contentType="content_type& q>uot; variab<lePrefix>=&quo<t;prefix&qu>ot; < variableSuffix ="suffix&>quot; new_payload</Payload > QueryParams < QueryPa>ram n<ame="qu>eryparam_name&qu ot;queryparam_<value/QueryPa>ram < ... >/QueryParams ReasonPhra<sereason_fo>r_err<or o>r {variable}/ReasonPhrase StatusCo<deHTT>P_sta<tus_cod>e or {variable}/Stat<usCod>e < V>e<rb[GET|POST|PU>T|PATCH|DELETE|{variable}]/Verb Version[1.0|1.1|{variable}]/Verb /Set /AssignMessage
Contoh berikut menetapkan header tertentu. Jika kebijakan ini dilampirkan dalam alur Permintaan, sistem upstream akan dapat menerima header tambahan yang tidak disertakan dalam permintaan masuk asli.
<AssignMessage name="AM-Set-He>ade<r&q>uot; < Set > Header<s Header name="authentic>ated-developer"{verifyapikey<.VAK-1.>devel<oper.id}>/He<ader> < /Heade>rs /S<et Assi>g<nTorequest/Ass>ignTo /AssignMessage
Contoh berikut mengganti payload untuk respons, serta header Content-Type
.
<AssignMessage name="AM-Overwrite-Pay>loa<d&q>uot; < Set Payload contentType="ap>plication/json&qu<ot;{ &qu>ot;<stat>us&<quot; : >42 }/Pay<load /S>e<t AssignTore>sponse/AssignTo /AssignMessage
<FormParams>
(anak dari <Set>
)
Menimpa parameter formulir yang ada pada permintaan dan menggantinya dengan nilai baru yang Anda tentukan dengan elemen ini. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> |
Elemen Induk |
<Set>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me"<; Set FormParams F>ormParam name=& <quot;formp>aram_name"<formparam_v>alu<e/Fo>r<mParam .>.. /FormParams /Set /AssignMessage
Contoh berikut menetapkan parameter formulir bernama "myparam" ke nilai
variabel request.header.myparam
dalam permintaan kustom baru:
<AssignMessage name="AM-set-formpara>ms-<1&q>uot; < Set >FormPar<ams FormParam name>="myparam"{req<uest.heade>r.myp<aram}/FormP>ara<m > /<FormParams /Set AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
Anda dapat menggunakan <FormParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Permintaan
Jika Anda menentukan parameter formulir kosong dalam kebijakan
(<Add><FormParams/></Add>
), kebijakan 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>
(anak dari <Set>
)
Menimpa header HTTP yang ada dalam permintaan atau respons, yang ditentukan oleh
elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <Header> |
Elemen Induk |
<Set>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy>_name&q<uot; SetHeaders >Header <name=&q>uot;header_name<"he>ade<r_va>l<ue/Header > ... /Headers /Set /AssignMessage
Contoh berikut menetapkan header x-ratelimit-remaining
ke nilai
variabel ratelimit.Quota-1.available.count
:
<AssignMessage name="AM-Set-RateLimit-He>ade<r&q>uot; < Set > Head<ers Header name="X-RateL>imit-Remaining"{ratelimit.Quot<a-1.ava>ilabl<e.count}>/He<ader> < /Heade>rs /Se<t Assig>n<Toresponse/Ass>ignTo /AssignMessage
Jika Anda menentukan header kosong dalam kebijakan
(<Set><Headers/></Set>
), kebijakan tidak akan menetapkan header apa pun. Hal ini akan memiliki efek yang sama dengan menghilangkan <Headers>
.
<Path>
(anak dari <Set>
)
<Payload>
(anak dari <Set>
)
Mendefinisikan isi pesan untuk permintaan atau respons, yang ditentukan oleh
elemen <AssignTo>
. Payload dapat berupa jenis konten yang valid, seperti teks biasa, JSON, atau XML.
Nilai Default | string kosong |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_name"Set Payload contentType=& quot;c ontent_type" variablePrefix =>"prefi <x"<>/span> < > <variableSuffix>="suffix"new_payload/Payload /Set /AssignMessage
Contoh berikut menetapkan payload teks biasa:
<AssignMessage name="set-paylo>ad-<1&q>uot; < Set Payload contentType=&q>uo<t;text/p>lai<n&qu>o<t;42/Payload > /Set /AssignMessage
Contoh berikut menetapkan payload JSON:
<AssignMessage name="set-paylo>ad-<2&q>uot; < Set Payload contentType="ap>plication/json" {"name&q<uot;:&qu>ot;<foo&>q<uot;, "ty>pe":"bar"} /Payload /Set /AssignMessage
Contoh berikut menyisipkan nilai variabel ke dalam payload dengan mengapit nama variabel dalam tanda kurung kurawal:
<AssignMessage name="set-paylo>ad-<3&q>uot; < Set Payload contentType="ap>plication/json" {"name":"f<oo">, &<quot>;<type":&qu>ot;{variable_name}"} /Payload /Set /AssignMessage
Pada versi Apigee sebelumnya, Anda tidak dapat menggunakan tanda kurung kurawal untuk menunjukkan referensi variabel dalam payload JSON. Dalam rilis tersebut, Anda
harus menggunakan atribut variablePrefix
dan variableSuffix
untuk
menentukan karakter pemisah, dan menggunakannya untuk membungkus nama variabel, seperti berikut:
<AssignMessage name="set-payloa>d-3<b&q>uot; < Set Payload contentType="application/json" variablePrefix=&q>uot;@" variableSuffix="#" {&quo<t;name&q>uot<;:&q>u<ot;foo", >"type":"@variable_name#"} /Payload /Set /AssignMessage
Sintaksis lama ini masih berfungsi.
Konten <Payload>
dianggap sebagai template pesan. Artinya, kebijakan
AssignMessage mengganti variabel yang diapit tanda kurung kurawal dengan nilai
variabel yang dirujuk saat runtime.
Contoh berikut menggunakan sintaksis tanda kurung kurawal untuk menyetel bagian payload ke nilai variabel:
<AssignMessage name="set-paylo>ad-<4&q>uot; < Set Payload contentType=>"t<ext/>xml"< > r<oot> <e1>sunday</e1> <e2>funday</e2> < e3{>var1}</e3 > /<root> < /Payload > /Set /AssignMessage
Tabel berikut menjelaskan atribut <Payload>
:
Atribut | Deskripsi | Ketersediaan | Jenis |
---|---|---|---|
contentType |
Jika ditentukan, nilai |
Opsional | String |
variablePrefix |
Secara opsional menentukan pemisah awal pada variabel alur. Nilai defaultnya adalah "{". Untuk informasi selengkapnya, lihat Referensi variabel alur. | Opsional | Char |
variableSuffix |
Secara opsional menentukan pembatas akhir pada variabel alur. Nilai defaultnya adalah "}". Untuk informasi selengkapnya, lihat Referensi variabel alur. | Opsional | Char |
<QueryParams>
(anak dari <Set>
)
Menimpa parameter kueri yang ada dalam permintaan dengan nilai baru. Elemen ini tidak berpengaruh pada respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> |
Elemen Induk |
<Set>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_nam>e"< Set QueryParams Qu e>ryParam name=&qu <ot;querypar>am_name"qu<eryparam_val>ue/<Quer>y<Param ..>. /QueryParams /Set /AssignMessage
Contoh berikut menetapkan parameter kueri "address" ke nilai variabel
request.header.address
:
<AssignMessage name="AM-set-querypara>ms<-1&>quot;< Set Q>ueryPar<ams QueryParam name>="address"{req<uest.header>.addr<ess}/QueryPa>ram< > </QueryParams > /Set /AssignMessage
Anda dapat menggunakan <QueryParams>
hanya jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
Jika Anda menentukan parameter kueri kosong dalam kebijakan
(<Set><QueryParams/></Set>
), kebijakan tidak akan menetapkan parameter
kueri apa pun. Ini sama dengan menghilangkan <QueryParams>
.
<ReasonPhrase>
(anak dari <Set>
)
Menetapkan frasa alasan pada respons. Hal ini biasanya dilakukan untuk proses debug bersama dengan
<StatusCode>
. Elemen ini tidak berpengaruh pada permintaan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <ReasonPhrase>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_name>" Set ReasonPhrase<reason_for_er>ror< or >{<variable}/Reas>onPhrase /Set /AssignMessage
Contoh berikut menentukan frasa alasan sederhana:
<AssignMessage name="set-reasonphra>se-<1&q>uot; < Set Re>asonPhraseBa<d medicine/Re>aso<nPhr>ase< /Set AssignTo createNew="true" transport=&qu>o<t;http" t>ype="response"/ /AssignMessage
Konten <ReasonPhrase>
dianggap sebagai template pesan. Artinya,
nama variabel yang diapit kurung kurawal akan diganti saat runtime dengan nilai
variabel yang dirujuk, seperti yang ditunjukkan contoh berikut:
<AssignMessage name="AM-set-reasonphra>se-<2&q>uot; < Set Re>asonPhrase{calloutresponse.reas<on.phrase}/Re>aso<nPhr>ase< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
Anda dapat menggunakan <ReasonPhrase>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Respons
<StatusCode>
(anak 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 |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <StatusCode>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me" Set StatusCode<HTTP_status>_co<de o>r< {variable}/St>atusCode /Set /AssignMessage
Contoh berikut menetapkan kode status sederhana:
<AssignMessage name="AM-set-statuscode>-40<4&q>uot; < Set >Sta<tusCode404/>Sta<tusC>ode< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
Konten <StatusCode>
dianggap sebagai template pesan. Artinya, nama variabel yang diapit kurung kurawal akan diganti saat runtime dengan nilai variabel yang dirujuk, seperti yang ditunjukkan contoh berikut:
<AssignMessage name="set-statusco>de-<2&q>uot; < Set >StatusCode{calloutresponse.st<atus.code}/>Sta<tusC>ode< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
Anda dapat menggunakan <StatusCode>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Respons
<Verb>
(anak dari <Set>
)
Menetapkan kata kerja HTTP pada permintaan. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Verb>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;pol>icy_name" Set Verb[GET|POS<T|PUT>|PA<TCH|>D<ELETE|{variabl>e}]/Verb /Set /AssignMessage
Contoh berikut menetapkan kata kerja sederhana pada permintaan:
<AssignMessage name="AM-set-ve>rb-<1&q>uot; < Se>t < Ver>bPO<ST/V>erb< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
Konten <Verb>
dianggap sebagai template pesan. Artinya, nama variabel
yang diapit kurung kurawal akan diganti saat runtime dengan nilai variabel
yang dirujuk.
Contoh berikut menggunakan variabel untuk mengisi kata kerja:
<AssignMessage name="AM-set-verb-to-dynamic-v>alu<e&q>uot; < Se>t Verb{my<_vari>abl<e}/V>erb< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
Anda dapat menggunakan <Verb>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<Version>
(anak dari <Set>
)
Menetapkan versi HTTP pada permintaan. Elemen ini tidak memengaruhi respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Version>
menggunakan sintaksis berikut:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy>_name" Set < Ve>rsi<on[1>.<0|1.1|{variabl>e}]/Verb /Set /AssignMessage
Contoh berikut menetapkan nomor versi ke "1.1":
<AssignMessage name="AM-set-versi>on-<1&q>uot; < Set > <Version1>.1/<Vers>io<n /Set /Ass>ignMessage
Berikut menggunakan variabel dalam tanda kurung kurawal untuk menetapkan nomor versi:
<AssignMessage name="AM-set-versi>on-<2&q>uot; < Set > Version{m<y_versio>n}/<Vers>ion< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
Konten <Version>
dianggap sebagai template pesan. Artinya, nama variabel yang diapit tanda kurung kurawal akan diganti saat runtime dengan nilai variabel yang dirujuk.
Anda dapat menggunakan <Version>
hanya jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
Membuat pesan permintaan kustom
Anda dapat menggunakan kebijakan AssignMessage 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 AssignMessage
Anda. Tetapkan createNew
ke "true" dan tentukan nama pesan baru di isi
elemen, seperti yang ditunjukkan contoh berikut:
<AssignMessage name="AM-assign>to-2<" AssignTo createNew="true" transport=&>quot;http" <type=&quo>t;<request"N>ameOfNewMessage/AssignTo /AssignMessage
Secara default, Edge tidak melakukan apa pun dengan pesan permintaan kustom. Setelah membuatnya, Edge akan melanjutkan alur dengan permintaan asli. Untuk menggunakan permintaan kustom, tambahkan kebijakan seperti kebijakan ServiceCallout ke proxy Anda yang dapat meneruskan permintaan kustom ke layanan eksternal.
Contoh berikut membuat pesan permintaan kustom:
Contoh berikut membuat objek permintaan kustom dengan Assign Message:
<AssignMessage name="AssignMessa>ge-<3" AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;M>yCust<omReque>st/Ass<ignTo Copy Headers > <Header n>ame<=&quo>t;u<ser>-agen<t"/ > /Head<ers /Copy Set Que>ryParams QueryParam< name=">;addr<ess"{re>quest<.que>ryp<aram.>add<y}/Q>uer<yParam /QueryParams > VerbG<ET/Verb /Set IgnoreUnr>e<solvedVariable>sfalse /IgnoreUnresolvedVariables /AssignMessage
Contoh ini:
- Membuat objek pesan permintaan baru yang disebut "MyCustomRequest".
- Di MyCustomRequest, kebijakan ini:
- Menyalin nilai header HTTP
user-agent
dari permintaan masuk ke pesan baru. Karena<Copy>
menggunakan referensi absolut ke variabel aluruser-agent
, tidak ada perlu menentukan atributsource
ke<Copy>
. - Menetapkan parameter kueri
address
pada pesan kustom ke nilai parameter kueriaddy
permintaan masuk. - Menetapkan kata kerja HTTP ke
GET
.
- Menyalin nilai header HTTP
- Menetapkan
<IgnoreUnresolvedVariables>
ke "false". Jika<IgnoreUnresolvedVariables>
adalah "false", jika salah satu variabel yang coba ditambahkan oleh kebijakan tidak ada, Edge akan berhenti memproses alur API.
Berikut contoh lain yang menunjukkan cara membuat objek permintaan kustom dengan Assign Message:
<AssignMessage name="AssignMessa>ge-<2" AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;>partn<er.r>eque<st/As>signT<o Set VerbPOST/Verb >Payload< conten><tType=&qu>ot;<text/xml&q><uot; > re<questope>rat<ion1>0<5/operation/re>quest /Payload /Set /AssignMessage
Contoh ini membuat permintaan kustom baru bernama "partner.request". Kemudian, <Verb>
dan <Payload>
akan ditetapkan pada permintaan baru.
Anda dapat mengakses pesan permintaan kustom dalam kebijakan AssignMessage lain yang terjadi kemudian dalam
alur. Contoh berikut mengambil nilai header
user-agent
pesan permintaan kustom:
<AssignMessage name="custom-request-1-ac>ces<s" D>isplayNamecustom-reques<t-1-access/D>isp<layName > AssignTopartn<er.reques>t/A<ssi>gnTo < Set > Head<ers Header name="user-agentCop>yCustomRequest"{MyCustomReques<t.heade>r.use<r-agent}>/He<ader> < /Headers > /Set /AssignMessage
Video
Tonton video berikut untuk mempelajari lebih lanjut kebijakan AssignMessage.
Video | Deskripsi |
---|---|
Mengapa Kebijakan Pesan Ditetapkan? | Pelajari manfaat penggunaan kebijakan AssignMessage untuk mengubah permintaan atau respons API tanpa mengubah kode backend. |
Menyalin elemen API menggunakan kebijakan AssignMessage | Menyalin elemen dari permintaan atau respons API dan membuat objek permintaan atau respons baru menggunakan kebijakan AssignMessage. |
Menghapus elemen API menggunakan kebijakan AssignMessage | Hapus elemen API dan ubah API sebelum mencapai backend target menggunakan kebijakan AssignMessage. |
Menambahkan dan menetapkan elemen API menggunakan kebijakan AssignMessage | Ubah permintaan atau respons API dengan menambahkan parameter kueri, header, parameter formulir, atau payload menggunakan kebijakan AssignMessage. |
Membuat variabel kustom menggunakan kebijakan AssignMessage | Tetapkan variabel alur kustom menggunakan kebijakan AssignMessage dan manfaatkan variabel tersebut dalam kebijakan lain di proxy API. |
Buat objek permintaan atau respons baru menggunakan kebijakan AssignMessage | Buat objek permintaan atau respons API baru menggunakan kebijakan AssignMessage saat runtime API. |
Membuat API tiruan menggunakan kebijakan AssignMessage | Buat REST API tiruan sederhana dengan menambahkan kebijakan AssignMessage dalam alur respons. |
Menetapkan atau mengubah payload menggunakan kebijakan AssignMessage | Mengonversi permintaan REST menjadi permintaan SOAP dengan menetapkan Payload SOAP menggunakan kebijakan AssignMessage saat runtime API. |
Kode error
Bagian ini menjelaskan kode kesalahan dan pesan kesalahan yang dikembalikan dan variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu kesalahan. Informasi ini penting untuk diketahui jika Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Penanganan kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dijalankan.
Kode error | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Kebijakan tidak dapat menyetel variabel. Lihat string fault untuk mengetahui nama variabel yang belum terselesaikan. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Error ini terjadi jika atribut Variabel jenis pesan mewakili seluruh permintaan dan respons HTTP. Edge bawaan
variabel alur |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Error ini terjadi jika variabel yang ditentukan dalam kebijakan Tetapkan Pesan:
|
build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaiki |
---|---|---|
InvalidIndex |
Jika indeks ditentukan dalam elemen <Copy> dan/atau <Remove> dari Tugaskan Pesan
kebijakannya adalah 0 atau angka negatif, maka deployment Proxy API akan gagal.
|
build |
InvalidVariableName |
Jika elemen turunan <Name> kosong atau tidak ditentukan dalam elemen <AssignVariable> ,
deployment proxy API akan gagal karena tidak ada nama variabel valid untuk
yang harus diberi nilai. Nama variabel yang valid wajib diisi.
|
build |
InvalidPayload |
Payload yang ditentukan dalam kebijakan tidak valid. |
Variabel kesalahan
Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk informasi selengkapnya, lihat Apa yang yang perlu diketahui tentang error kebijakan.
Variabel | Di mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama kesalahan, seperti yang tercantum dalam tabel Error runtime di atas. Nama kesalahan adalah bagian terakhir dari kode kesalahan. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name adalah nama kebijakan yang ditentukan pengguna yang menampilkan kesalahan. | assignmessage.AM-SetResponse.failed = true |
Contoh respons error
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Contoh aturan kesalahan
<FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
Skema
Setiap jenis kebijakan ditentukan oleh skema XML (.xsd
). Sebagai referensi, skema kebijakan
tersedia di GitHub.
Topik terkait
Contoh kebijakan Working AssignMessage tersedia di contoh Platform API.
Untuk contoh yang lebih canggih tentang cara mengganti target.url
dari
ProxyEndpoint, lihat artikel Komunitas Apigee ini.
Untuk melihat "set path" yang diterapkan dalam kebijakan ServiceCallout, lihat contoh Learn by doing ini di contoh Apigee GitHub. Cukup clone repositori dan ikuti petunjuk dalam topik tersebut. Contoh ini menggunakan kebijakan AssignMessage untuk menetapkan jalur permintaan, lalu menggunakan kebijakan Panggilan Layanan untuk membuat permintaan ke layanan eksternal.