Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
Apa
Kebijakan MenetapkanMessage mengubah atau membuat pesan permintaan dan respons baru selama Alur proxy API. Dengan kebijakan ini, Anda dapat melakukan tindakan berikut pada pesan tersebut:
- Tambahkan parameter formulir, header, atau parameter kueri baru ke pesan
- Menyalin properti yang ada dari satu pesan ke pesan lainnya
- Hapus header, parameter kueri, parameter formulir, dan/atau pesan payload dari sebuah pesan
- Menetapkan nilai properti yang ada dalam pesan
Dengan kebijakan Menetapkan Pesan, Anda biasanya menambahkan, mengubah, atau menghapus properti dari permintaan atau respons. Namun, Anda juga dapat menggunakan kebijakan MenetapkanMessage untuk membuat pesan permintaan atau respons dan meneruskannya ke target alternatif, seperti yang dijelaskan dalam Buat pesan permintaan kustom.
Kebijakan MenetapkanMessage dapat membuat atau mengubah variabel alur dengan turunan berikut elemen:
Elemen <AssignMessage>
Menentukan kebijakan MenetapkanMessage.
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:
Sintaksis
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>
Kebijakan Default
Contoh berikut menunjukkan setelan default saat Anda menambahkan kebijakan TetapkanMessage ke alur Anda 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 DefineMessage baru di UI Edge, template akan berisi stub untuk semua
operasi yang memungkinkan. Biasanya, Anda akan memilih operasi mana yang ingin dijalankan dengan kebijakan ini
dan menghapus sisa elemen turunan. Misalnya, jika Anda ingin melakukan operasi penyalinan, gunakan
<Copy>
, lalu hapus <Add>
, <Remove>
, dan elemen turunan lainnya dari
kebijakan untuk membuatnya 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 tingkat tinggi tentang elemen turunan dari
<AssignMessage>
:
Elemen Turunan | Wajib? | Deskripsi |
---|---|---|
Operasi umum | ||
<Add> |
Opsional | Menambahkan informasi ke objek pesan yang ditentukan oleh metode
Elemen <AssignTo> .
|
<Copy> |
Opsional | Menyalin informasi dari pesan yang ditentukan oleh 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 di permintaan atau respons, yang ditentukan oleh
elemen <AssignTo> .
|
Elemen turunan lainnya | ||
<AssignTo> |
Opsional | Menentukan di pesan mana kebijakan TetapkanMessage dijalankan. Hal ini dapat berupa standar permintaan atau respons, atau bisa berupa pesan khusus baru. |
<AssignVariable> |
Opsional | Menetapkan nilai ke variabel alur. Jika variabel tersebut tidak ada, maka
<AssignVariable> membuatnya. |
<IgnoreUnresolvedVariables> |
Opsional | Menentukan apakah pemrosesan berhenti saat variabel yang belum terselesaikan ditemukan. |
Setiap elemen turunan ini dijelaskan di bagian selanjutnya.
Contoh
Contoh berikut menunjukkan beberapa cara menggunakan kebijakan Menetapkan Pesan kebijakan:
1: Tambahkan header
Contoh berikut menambahkan header ke permintaan dengan atribut
Elemen <Add>
:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2: Menghapus payload
Contoh berikut menghapus payload dari respons dengan <Remove>
:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
3: Ubah respons
Contoh berikut mengubah objek respons yang ada dengan menambahkan header ke objek tersebut:
<AssignMessage name="modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" type="response"></AssignTo> </AssignMessage>
Contoh ini tidak membuat pesan baru. Sebagai gantinya, kode ini memodifikasi pesan respons yang ada dengan menambahkan header HTTP.
Karena contoh ini menghilangkan nama variabel dalam elemen <AssignTo>
, dan menentukan
type
sebagai "respons", kebijakan ini mengubah objek respons yang ditampilkan oleh target
server tertentu.
Header HTTP yang ditambahkan ke pesan respons oleh kebijakan ini berasal dari variabel diisi oleh kebijakan LookupCache. Oleh karena itu, pesan respons Kebijakan Tetapkan Pesan berisi header HTTP yang menunjukkan apakah hasilnya telah atau tidak diambil dari cache. Mengatur {i>header<i} dalam respons bisa berguna untuk {i>debugging <i}dan pemecahan masalah.
4: Menyetel konten dinamis
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 ditetapkan dalam mode curl
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="set-dynamic-content"> <AssignTo createNew="false" type="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 memasukkan variabel menggunakan variablePrefix
dan
Atribut variableSuffix
dengan karakter pembatas seperti yang ditampilkan di bawah
contoh:
<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 flow.
Mulai rilis cloud 16.08.17, Anda juga dapat menggunakan tanda kurung kurawal untuk menyisipkan variabel.
5: Hapus parameter kueri
Contoh berikut menghapus parameter kueri apikey
dari permintaan:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Praktik terbaiknya adalah menghapus parameter kueri apikey
dari permintaan
pesan saat Anda menggunakan kebijakan VerifyAPIKey untuk autentikasi pengguna. Anda melakukan ini untuk mencegah
informasi kunci sensitif agar tidak diteruskan ke target backend.
6: Menetapkan/mendapatkan variabel
Contoh berikut menggunakan tiga kebijakan Tetapkan Pesan:
- Membuat tiga variabel alur dalam permintaan, dengan nilai statis
- Mendapatkan variabel alur secara dinamis dalam kebijakan kedua dalam alur permintaan
- Menetapkannya dalam payload respons
<!-- Policy #1: Set variables in the request --> <AssignMessage continueOnError="false" enabled="true" name="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> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Dalam kebijakan pertama, elemen <AssignVariable>
membuat dan menetapkan tiga
beberapa variabel
dalam permintaan. Setiap elemen <Name>
menetapkan
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 <Name>
menentukan nama variabel baru. Jika variabel
yang direferensikan oleh elemen <Ref>
tidak dapat diakses, Anda dapat menggunakan nilai ini
yang ditentukan oleh elemen <Value>
.
Untuk mencoba serangkaian kebijakan ini:
- Tambahkan kebijakan #1 dan #2 ke alur permintaan. Pastikan untuk mencantumkan kebijakan #1 sebelum kebijakan #2.
- Tambahkan kebijakan ketiga di alur response.
- Kebijakan ketiga menggunakan elemen
<Set>
untuk menambahkan variabel ke respons. Tujuan contoh berikut menyusun payload XML dalam respons yang dikembalikan 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 menggabungkannya kurung kurawal.Pastikan untuk menyetel atribut
contentType
elemen<Payload>
ke "aplikasi/xml". - Mengirim permintaan ke proxy API Anda; misalnya:
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
Secara opsional, 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>
7: Mendapatkan header respons Info Layanan
Pada contoh berikut, misalkan kebijakan ServiceInfo berada dalam permintaan proxy API,
dan respons info berisi beberapa header dengan nama yang sama
(Set-Cookie
). Dengan asumsi variabel respons Info Layanan adalah default
calloutResponse
, kebijakan berikut mendapatkan Set-Cookie
kedua
nilai header.
<AssignMessage continueOnError="false" enabled="true" name="get-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Untuk menampilkan 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 Menetapkan Pesan di GitHub.
Referensi elemen turunan
Bagian ini menjelaskan elemen turunan dari <AssignMessage>
.
<Add>
Menambahkan informasi ke permintaan atau respons, yang ditentukan oleh <AssignTo>
.
Elemen <Add>
menambahkan properti baru pada pesan yang tidak ada dalam versi aslinya
untuk membuat pesan email baru. Untuk mengubah nilai properti yang sudah ada, gunakan <Set>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <QueryParams> |
Elemen <Add>
menggunakan sintaksis berikut:
Sintaksis
<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 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:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Contoh 2
Contoh berikut menggunakan elemen <Headers>
untuk menambahkan elemen
User-Agent
ke permintaan endpoint target:
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh 3
Contoh berikut menggunakan elemen <QueryParams>
untuk menambahkan satu kueri
dengan nilai statis ke permintaan:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh ini menggunakan <Add>
dalam pra-alur permintaan. Jika Anda melihat hasilnya
di sebuah alat,
misalnya Alat pelacakan, permintaan ke "http://httpbin.org/get" menjadi
"http://httpbin.org/get?myParam=42".
Elemen turunan <Add>
mendukung substitusi string dinamis, yang dikenal sebagai
template pesan.
<FormParams>
(turunan dari <Add>
)
Menambahkan parameter formulir baru ke pesan permintaan. Elemen ini tidak memengaruhi respons untuk membuat pesan email baru.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
Sintaksis
<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 1
Contoh berikut menambahkan parameter formulir tunggal ("answer") dan nilai statis ("42") ke permintaan:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"></AssignTo> </AssignMessage>
Contoh 2
Contoh berikut mendapatkan nilai parameter string kueri name
dan
menambahkannya ke permintaan sebagai parameter formulir:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
Perhatikan bahwa contoh ini tidak menentukan target dengan <AssignTo>
. Kebijakan ini menambahkan atribut
parameter ke permintaan saja.
Contoh 3
Contoh berikut menambahkan beberapa parameter formulir ke permintaan:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3"> <Add> <FormParams> <FormParam name="name">{request.queryparam.name}</FormParam> <FormParam name="zip">{request.queryparam.zipCode}</FormParam> <FormParam name="lang">{request.queryparam.lang}</FormParam> </FormParams> </Add> <AssignTo transport="http" type="request"/> </AssignMessage>
Contoh ini mendapatkan parameter string kueri dari permintaan asal dan menambahkannya parameter formulir ke permintaan yang dikirim ke endpoint target.
Anda dapat menggunakan alat Trace untuk melihat alur. Anda akan melihat bahwa isi permintaan berisi data formulir yang dienkode ke URL, yang awalnya diteruskan sebagai string kueri parameter:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
Anda hanya dapat menggunakan <FormParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Permintaan
- Salah satu (atau kedua) hal berikut:
- Data formulir: Tetapkan ke nilai tertentu, atau "" (string kosong). Misalnya, dengan
curl
, tambahkan-d ""
ke permintaan Anda. - Header
Content-Length
: Tetapkan ke 0 (jika tidak ada data dalam permintaan awal; jika tidak, panjang saat ini, dalam byte). Misalnya, dengancurl
tambahkan-H "Content-Length: 0"
ke permintaan Anda.
- Data formulir: Tetapkan ke nilai tertentu, 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 menyetel header Content-Type
permintaan menjadi
"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 atribut
Elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <Header> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
Contoh 1
Contoh berikut menambahkan header user-agent
ke pesan permintaan, dan
menetapkan nilai variabel alur request.user.agent
ke header tersebut.
<AssignMessage continueOnError="false" enabled="true" name="add-headers-1"> <Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(turunan dari <Add>
)
Menambahkan parameter kueri baru ke permintaan. Elemen ini tidak berpengaruh pada respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> |
Elemen Induk |
<Add>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
Contoh 1
Contoh berikut menambahkan parameter kueri "myParam" ke permintaan dan menetapkan nilai "42" kolom tersebut:
<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Anda hanya dapat menggunakan <QueryParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
Selain itu, Anda hanya dapat mengatur parameter kueri ketika elemen <AssignTo>
Atribut type
adalah pesan permintaan. Menetapkannya pada respons tidak akan berpengaruh.
Jika Anda menentukan array parameter kueri kosong dalam kebijakan
(<Add><QueryParams/></Add>
), kebijakan ini tidak menambahkan kueri apa pun
parameter. Ini sama dengan menghilangkan <QueryParams>
.
<AssignTo>
Menentukan objek mana yang dioperasikan oleh kebijakan MenetapkanMessage. 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 TetapkanMessage.
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>
, kebijakan akan bertindak berdasarkan permintaan atau respons default,
yang didasarkan pada tempat
kebijakan dijalankan. Jika kebijakan dijalankan dalam alur permintaan,
memengaruhi pesan permintaan. Jika dijalankan dalam alur respons, kebijakan akan memengaruhi respons
secara {i>default<i}.
Elemen <AssignTo>
menggunakan sintaksis berikut:
Sintaksis
<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 1
Contoh berikut menetapkan bahwa target adalah permintaan asli yang akan dikirim ke endpoint target:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Dengan menetapkan createNew
ke "false" (default), contoh ini tidak membuat
permintaan baru. Semua operasi dalam kebijakan ini memengaruhi permintaan asli.
Contoh 2
Contoh berikut akan membuat objek permintaan baru:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Saat Anda membuat objek permintaan atau respons baru, elemen lain dari kebijakan MenetapkanMessage
(seperti <Add>
, <Set>
, dan <Set>
) bertindak berdasarkan
.
Anda bisa mengakses objek permintaan baru di kebijakan lain nanti dalam alur, atau mengirim permintaan baru minta objek ke layanan eksternal dengan kebijakan Service callout.
Contoh 3
Contoh berikut membuat objek permintaan baru bernama "MyRequestObject":
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
Saat Anda membuat objek permintaan atau respons baru, elemen lain dari kebijakan MenetapkanMessage
(seperti <Add>
, <Set>
, dan <Set>
) bertindak berdasarkan
.
Anda bisa mengakses objek permintaan baru di kebijakan lain nanti dalam alur, atau mengirim permintaan baru minta objek ke layanan eksternal dengan kebijakan Service callout.
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 jenis baru dari jenis tersebut
yang ditentukan oleh Jika "false", kebijakan akan merespons dengan salah satu dari dua cara berikut:
Jika
|
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". Berlaku
nilainya adalah "request" atau "respons".
Nilai defaultnya adalah "request". Jika Anda menghilangkan atribut ini, Edge akan membuat permintaan atau respons, tergantung pada alur apa kebijakan ini dijalankan. |
Opsional | String |
<AssignVariable>
Menetapkan nilai ke variabel alur tujuan (mis., variabel yang nilainya ditetapkan oleh
kebijakan TetapkanMessage). Jika variabel flow tidak ada, <AssignVariable>
akan membuat
anotasi.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Jenis kompleks |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<Name> (wajib ada)<Ref> <Template> <Value> |
Nilai yang Anda tetapkan ke variabel alur tujuan dapat berupa salah satu dari berikut ini:
- String literal: Gunakan elemen turunan
<Value>
untuk menentukan literal untuk variabel alur tujuan. - Variabel flow: Gunakan elemen turunan
<Ref>
untuk menentukan nilai elemen variabel alur yang ada untuk variabel alur tujuan. Untuk daftar lengkap alur variabel yang dapat digunakan sebagai sumber, lihat Referensi variabel flow. - Template pesan: Gunakan elemen turunan
<Template>
untuk menentukan template pesan untuk variabel {i>destination flow<i}.
Elemen <AssignVariable>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Gunakan elemen <Ref>
untuk menentukan variabel sumber. Jika
variabel yang direferensikan oleh <Ref>
tidak dapat diakses, Edge menggunakan nilai
yang ditentukan oleh elemen <Value>
. Jika Anda menentukan
<Template>
, elemen ini akan diprioritaskan daripada elemen turunan lainnya.
Contoh 1
Contoh berikut menetapkan nilai variabel baru, myvar
, ke literal
nilai "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Contoh 2
Contoh berikut menetapkan nilai variabel flow
request.header.user-agent
ke variabel alur tujuan myvar
dan nilai parameter kueri country
ke variabel alur tujuan
Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Jika salah satu penetapan gagal, Edge menetapkan nilai "ErrorOnCopy" dapat variabel {i>destination flow<i}.
Jika variabel alur myvar
atau Country
tidak ada,
<AssignVariable>
membuatnya.
Contoh 3
Contoh berikut menggunakan <Template>
elemen turunan untuk menggabungkan dua variabel konteks
dengan string literal (tanda hubung) di antara keduanya:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Penggunaan <AssignVariable>
yang umum adalah menetapkan nilai default untuk parameter kueri, header, atau
nilai lain yang bisa diteruskan dengan permintaan. Anda melakukan ini dengan
kombinasi dari kedua
Elemen turunan <Ref>
dan <Value>
. Untuk selengkapnya
informasi selengkapnya, lihat contoh untuk <Ref>
.
<Name>
(turunan dari <AssignVariable>
)
Menentukan nama variabel alur tujuan (mis., variabel yang nilainya ditetapkan oleh
kebijakan MenetapkanMessage). Jika variabel yang disebutkan dalam <AssignVariable>
tidak ada,
kebijakan akan membuat instance dengan nama tersebut.
Nilai Default | t/a |
Wajib? | Wajib |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Elemen <Name>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
Contoh 1
Contoh berikut menentukan variabel tujuan sebagai myvar
, dan menetapkannya
ke nilai literal "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Jika myvar
tidak ada, <AssignVariable>
akan membuatnya.
<Ref>
(turunan dari <AssignVariable>
)
Menentukan sumber penetapan sebagai variabel alur. Variabel {i>flow<i} dapat berupa salah satu variabel alur standar (seperti yang tercantum dalam referensi variabel flow), atau variabel alur kustom yang Anda buat.
Nilai <Ref>
selalu diinterpretasikan sebagai variabel flow; kamu tidak bisa
menetapkan suatu {i>string<i} literal sebagai
dengan sejumlah 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 flow dengan <Ref>
, hilangkan
tanda kurung tutup aneh aneh yang biasanya akan Anda gunakan untuk mereferensikan variabel alur. Misalnya,
untuk menetapkan nilai variabel baru Anda ke nilai alur client.host
variabel:
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
Guna menentukan nilai default untuk variabel alur tujuan, gunakan <Value>
dalam kombinasi dengan <Ref>
. Jika variabel {i>flow<i} yang ditentukan oleh
<Ref>
tidak ada, tidak dapat dibaca, atau null, maka Edge menetapkan nilai
<Value>
ke variabel alur tujuan.
Elemen <Ref>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> </AssignVariable> </AssignMessage>
Contoh 1
Contoh berikut menetapkan nilai variabel flow
request.header.user-agent
ke variabel alur tujuan myvar
dan
nilai parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariable-4"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> </AssignMessage>
Dalam contoh ini, Edge tidak memiliki nilai default (atau nilai penggantian) yang ditentukan untuk penugasan Anda.
Contoh 2
Contoh berikut menetapkan nilai variabel alur request.header.user-agent
ke variabel alur tujuan myvar
dan nilainya
dari parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Dalam contoh ini, jika nilai variabel alur request.header.user-agent
atau parameter kueri Country
bernilai null, tidak dapat dibaca, atau salah format, Edge menetapkan
nilai "ErrorOnCopy" pada variabel-variabel baru.
Contoh 3
Kasus penggunaan umum untuk <AssignVariable>
adalah menetapkan nilai default kueri
parameter, header, atau nilai lain yang
dapat diteruskan bersama permintaan. Misalnya, Anda membuat
proxy API cuaca tempat permintaan mengambil parameter kueri tunggal bernama "w". Ini
berisi ID kota yang Anda inginkan untuk cuaca. URL permintaan memiliki
bentuknya:
http://myCO.com/v1/weather/forecastrss?w=city_ID
Untuk mendefinisikan nilai default untuk "w", buat kebijakan MenetapkanMessage seperti berikut ini:
<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3"> <AssignTo createNew="false" transport="http" type="request"/> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignVariable> <Name>request.queryparam.w</Name> <Ref>request.queryparam.w</Ref> <Value>12797282</Value> </AssignVariable> </AssignMessage>
Dalam contoh ini, <AssignVariable>
mendapatkan nilai request.queryparam.w
dan menetapkannya ke dirinya sendiri. Jika variabel {i>flow<i} adalah {i>null<i}, artinya "w" parameter kueri sebelumnya adalah
dihilangkan dari permintaan, maka contoh ini menggunakan nilai {i>default<i} dari
Elemen <Value>
. Oleh karena itu, Anda dapat membuat permintaan ke API ini
proxy yang tidak menyertakan "w" parameter kueri:
http://myCO.com/v1/weather/forecastrss
...dan tetap saja proxy API menampilkan hasil yang valid.
Tidak seperti saat menggunakan <Value>
, nilai <Ref>
harus berupa
variabel flow, seperti properti request
, response
, atau
target
. Nilainya juga dapat berupa variabel alur kustom yang Anda buat.
Jika Anda menentukan variabel flow yang tidak ada untuk nilai <Ref>
,
dan nilai <IgnoreUnresolvedVariables>
adalah "true", Edge menampilkan error.
<Template>
(turunan dari <AssignVariable>
)
Menentukan template pesan. Pesan memungkinkan Anda melakukan substitusi string variabel saat kebijakan dijalankan, dan dapat menggabungkan string literal dengan nama variabel yang digabungkan dalam kurawal kurung kurawal. Selain itu, template pesan dukungan fungsi seperti escaping dan konversi kasus.
Gunakan atribut ref
untuk menentukan variabel alur dengan nilai variabel tersebut
adalah template pesan. Misalnya, Anda dapat menyimpan template pesan sebagai
atribut khusus
di aplikasi developer. Saat Edge mengidentifikasi aplikasi developer setelah memverifikasi kunci API
atau token keamanan (melalui kebijakan tambahan), <AssignVariable>
dapat menggunakan template pesan dari atribut khusus aplikasi, yang tersedia
sebagai variabel alur dari kebijakan keamanan. Contoh berikut mengasumsikan bahwa pesan
template tersedia di atribut pelanggan yang disebut message_template
di
aplikasi developer yang melakukan panggilan API, dengan kebijakan VerifyAPIKey digunakan untuk memverifikasi
kunci API aplikasi:
<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignVariable>
|
Elemen Turunan | Tidak ada |
Elemen <Template>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Template>message_template</Template> or <Template ref='template_variable'></Template> </AssignVariable> </AssignMessage>
Contoh 1
Contoh berikut menggunakan sintaksis template pesan untuk menggabungkan dua variabel konteks dengan string literal (tanda hubung) di antara keduanya:
<AssignMessage name='template-1'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
Contoh 2
Contoh berikut menentukan variabel alur, di mana nilai variabel tersebut adalah template pesan standar. Gunakan opsi ini jika Anda ingin memasukkan template yang telah ditetapkan ke runtime tanpa harus mengubah kebijakan:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
Contoh 3
Contoh berikut menentukan variabel alur dan nilai teks. Dalam kasus ini, jika
variabel yang direferensikan adalah non-null, nilai tersebut akan digunakan sebagai template. Jika elemen
nilainya adalah null, maka nilai teksnya (dalam hal ini, {system.uuid}-{messageid}
)
digunakan sebagai template. Pola ini berguna untuk memberikan "penggantian" nilai, di mana
dalam beberapa kasus, Anda ingin mengganti template default (bagian teks) dengan nilai
yang ditetapkan secara dinamis. Misalnya, pernyataan kondisional mungkin mengambil nilai
dari peta nilai kunci dan menetapkan variabel yang direferensikan ke nilai tersebut:
<AssignMessage name='template-2'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_variable'>{system.uuid}-{messageid}</Template> </AssignVariable> </AssignMessage>
<Value>
(turunan dari <AssignVariable>
)
Menentukan nilai variabel alur tujuan yang ditetapkan dengan <AssignVariable>
. Tujuan
nilai selalu ditafsirkan sebagai string literal; Anda tidak dapat menggunakan
variabel flow sebagai nilai, bahkan
jika Anda membungkus nilai dalam tanda kurung ("{}"). Untuk menggunakan variabel flow, 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 fallback). Jika <Ref>
tidak ditentukan, adalah
tidak dapat diselesaikan, atau null, nilai <Value>
akan digunakan.
Elemen <Value>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
Contoh 1
Contoh berikut menetapkan nilai variabel alur tujuan, myvar
,
ke nilai literal "42":
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
Contoh 2
Contoh berikut menetapkan nilai variabel flow
request.header.user-agent
ke variabel flow myvar
dan nilainya
dari parameter kueri country
ke variabel Country
:
<AssignMessage name="assignvariable-2"> <AssignVariable> <Name>myvar</Name> <Ref>request.header.user-agent</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> <Value>ErrorOnCopy</Value> </AssignVariable> </AssignMessage>
Jika salah satu penetapan gagal, <AssignVariable>
menetapkan nilai "ErrorOnCopy" dapat
variabel {i>destination flow<i}.
<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 nilainya ke permintaan atau respons,
tergantung pada alur apa kebijakan ini dijalankan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
Elemen <Copy>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
name="policy_name" >
<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>
<!-- Used as the destination for the <Copy>
values -->
<AssignTo createNew="[true|false]" transport="http"
type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
Contoh 1
Contoh berikut menyalin header, tiga parameter formulir, jalur, dan semua kueri parameter dari permintaan ke permintaan kustom yang baru:
<AssignMessage continueOnError="false" enabled="true" name="copy-1"> <Copy source="request"> <Headers> <Header name="Header_Name_1">Header value 1</Header> </Headers> <FormParams> <FormParam name="Form_Param_Name_1">Form param value 1</FormParam> <FormParam name="Form_Param_Name_2">Form param value 1</FormParam> <FormParam name="Form_Param_Name_3">Form param value 1</FormParam> </FormParams> <Payload>false</Payload> <Path>true</Path> <QueryParams/> <ReasonPhrase>false</ReasonPhrase> <StatusCode>false</StatusCode> <Verb>false</Verb> <Version>false</Version> </Copy> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Elemen <Copy>
memiliki atribut berikut:
Atribut | Deskripsi | Wajib? | Jenis |
---|---|---|---|
source |
Menentukan objek sumber salinan.
|
Opsional | String |
<FormParams>
(turunan dari <Copy>
)
Menyalin parameter formulir dari permintaan yang ditentukan oleh
Atribut source
milik elemen <Copy>
ke permintaan
ditentukan oleh elemen <AssignTo>
. Elemen ini tidak berpengaruh pada
yang dihasilkan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <FormParam> atau array kosong |
Elemen Induk |
<Copy>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menyalin parameter formulir tunggal dari permintaan ke permintaan khusus "MyCustomRequest":
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 2
Contoh berikut menyalin semua parameter formulir ke permintaan kustom "MyCustomRequest":
<AssignMessage name="copy-formparams-2"> <Copy source="request"> <FormParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 3
Contoh berikut menyalin tiga parameter formulir ke permintaan kustom "MyCustomRequest":
<AssignMessage name="copy-formparams-3"> <Copy source="request"> <FormParams> <FormParam name="paramName1"/> <FormParam name="paramName2"/> <FormParam name="paramName3"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 4
Jika ada beberapa parameter formulir dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="copy-formparams-4"> <Copy source="request"> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh ini menyalin "f1", "f2", dan nilai kedua dari "f3". Jika "f3" hanya memiliki satu , maka tidak akan disalin.
Anda hanya dapat menggunakan <FormParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Respons
- Salah satu (atau kedua) hal berikut:
- Data formulir: Tetapkan ke nilai tertentu, atau "" (string kosong). Misalnya, dengan
curl
, tambahkan-d ""
ke permintaan Anda. - Header
Content-Length
: Tetapkan ke 0 (jika tidak ada data dalam permintaan awal; jika tidak, panjang saat ini. Misalnya, dengancurl
tambahkan-H "Content-Length: 0"
ke permintaan Anda.
- Data formulir: Tetapkan ke nilai tertentu, 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>
(turunan dari <Copy>
)
Menyalin header HTTP dari pesan permintaan atau respons yang ditentukan oleh
atribut source
elemen <Copy>
ke permintaan
atau pesan respons yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <Header> atau array kosong |
Elemen Induk |
<Copy>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menyalin header user-agent
dari permintaan ke
objek permintaan kustom baru:
<AssignMessage name="copy-headers-1"> <Copy source="request"> <Headers> <Header name="user-agent"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 2
Untuk menyalin semua header, gunakan elemen <Headers>
kosong, seperti contoh berikut
menampilkan:
<AssignMessage name="copy-headers-2"> <Copy source="request"> <Headers/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 3
Jika ada beberapa header dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="copy-headers-3"> <Copy source="request"> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh ini menyalin "h1", "h2", dan nilai kedua dari "h3". Jika "h3" hanya memiliki satu , maka tidak akan disalin.
<Path>
(turunan dari <Copy>
)
Menentukan apakah jalur harus disalin dari permintaan sumber ke tujuan permintaan. Elemen ini tidak berpengaruh pada respons.
Jika "true", kebijakan ini akan menyalin jalur dari pesan permintaan yang ditentukan dalam
<Copy>
atribut source
milik elemen ke permintaan
pesan yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Path>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menunjukkan bahwa kebijakan MenetapkanMessage harus menyalin jalur dari sumber permintaan ke objek permintaan kustom yang baru:
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <Path>
jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<Payload>
(turunan 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
<Copy>
memiliki atribut source
milik elemen ke pesan
ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Payload>[false|true]</Payload> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <Payload>
ke "benar" sehingga payload permintaan
disalin dari permintaan ke respons:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(turunan dari <Copy>
)
Menyalin parameter string kueri dari permintaan yang ditentukan oleh
Atribut source
milik elemen <Copy>
ke permintaan yang ditentukan
oleh elemen <AssignTo>
. Elemen ini tidak berpengaruh pada respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <QueryParam> atau array kosong |
Elemen Induk |
<QueryParam>
|
Elemen Turunan | Tidak ada |
Elemen <QueryParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menyalin "my_param" parameter kueri dari permintaan ke parameter kueri baru, objek permintaan kustom:
<AssignMessage name="copy-queryparams-1"> <Copy source="request"> <QueryParams> <QueryParam name="my_param"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 2
Contoh berikut menyalin semua parameter kueri dari permintaan ke objek permintaan:
<AssignMessage name="copy-queryparams-2"> <Copy source="request"> <QueryParams/> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh 3
Jika ada beberapa parameter kueri dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="copy-queryparams-3"> <Copy source="request"> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Contoh ini menyalin "qp1", "qp2", dan nilai kedua dari "qp3". Jika "qp3" hanya memiliki satu nilai, maka tidak akan disalin.
Anda hanya dapat menggunakan <QueryParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
<ReasonPhrase>
(turunan dari <Copy>
)
Menentukan apakah frasa alasan harus disalin dari respons sumber ke respons respons tujuan. Elemen ini tidak berpengaruh pada permintaan.
Jika "benar", kebijakan ini akan menyalin ReasonPhrase
dari respons
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:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <ReasonPhrase>[false|true]</ReasonPhrase> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <ReasonPhrase>
ke "true", yang menyebabkan <Copy>
untuk menyalin frasa alasan dari respons default ke objek respons kustom:
<AssignMessage name="copy-reasonphrase-1"> <Copy source="response"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <ReasonPhrase>
jika kriteria berikut terpenuhi:
- Jenis pesan: Respons
<StatusCode>
(turunan dari <Copy>
)
Menentukan apakah kode status disalin dari respons sumber ke tujuan yang dihasilkan. Elemen ini tidak berpengaruh pada permintaan.
Jika "true", kebijakan ini akan menyalin kode status dari pesan respons yang ditentukan oleh
atribut source
elemen <Copy>
ke respons
pesan yang ditentukan oleh elemen <AssignTo>
.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Copy>
|
Elemen Turunan | Tidak ada |
Elemen <StatusCode>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <StatusCode>[false|true]</StatusCode> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <StatusCode>
ke "true", yang menyalin kode status
dari objek respons default ke objek respons kustom yang baru:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <StatusCode>
jika kriteria berikut terpenuhi:
- Jenis pesan: Respons
Penggunaan <StatusCode>
yang umum adalah untuk memastikan bahwa respons proxy memiliki status yang sama
sebagai respons yang diterima dari target saat createNew
<AssignTo>
ditetapkan ke "true".
<Verb>
(turunan dari <Copy>
)
Menentukan apakah kata kerja HTTP disalin dari permintaan sumber ke tujuan permintaan. Elemen ini tidak berpengaruh pada respons.
Jika "true", akan menyalin kata kerja yang ditemukan dalam 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:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Verb>[false|true]</Verb> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <Verb>
ke "true", yang menyalin kata kerja dari
permintaan default ke permintaan kustom yang baru:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <Verb>
jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<Version>
(turunan dari <Copy>
)
Menentukan apakah versi HTTP disalin dari permintaan sumber ke permintaan tujuan. Elemen ini tidak berpengaruh pada respons.
Jika "true", menyalin versi HTTP yang ada 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:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Version>[false|true]</Version> </Copy> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <Version>
ke "benar" pada permintaan, yang akan menyalin
dari objek permintaan default ke objek permintaan kustom yang baru:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <Version>
jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
<DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
baru dengan nama yang berbeda dan terdengar lebih alami.
Elemen <DisplayName>
umum untuk semua kebijakan.
Nilai Default | t/a |
Wajib? | Opsional. Jika Anda menghapus <DisplayName> , nilai atribut
atribut name kebijakan 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 saat variabel yang belum terselesaikan ditemukan.
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<AssignMessage>
|
Elemen Turunan | Tidak ada |
Tetapkan ke true
untuk mengabaikan variabel yang belum terselesaikan dan melanjutkan pemrosesan; sebaliknya
false
. Nilai defaultnya adalah false
.
Menyetel <IgnoreUnresolvedVariables>
ke true
berbeda dengan menyetel
continueOnError
<AssignMessage>
menjadi true
yang dikhususkan untuk
pengaturan dan mendapatkan
nilai variabel. Jika Anda menetapkan continueOnError
ke
true
, lalu Edge akan mengabaikan semua error, bukan hanya error yang ditemukan saat menggunakan
variabel.
Elemen <IgnoreUnresolvedVariables>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <IgnoreUnresolvedVariables>
ke "true":
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
Menghapus header, parameter kueri, parameter formulir, dan/atau payload pesan dari
sebuah pesan. Pesan bisa berupa permintaan atau respons. Anda menentukan pesan mana <Remove>
ditindaklanjuti 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 yang berisi data sensitif
informasi dari objek permintaan masuk, agar tidak diteruskan ke server backend.
Elemen <Remove>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <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> </AssignMessage>
Contoh 1
Contoh berikut menghapus isi pesan dari respons:
<AssignMessage continueOnError="false" enabled="true" name="remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
Dalam alur respons, kebijakan ini menghapus isi respons, dan hanya menampilkan HTTP {i>header<i} ke klien.
Contoh 2
Contoh berikut menghapus semua parameter formulir dan parameter kueri dari input permintaan:
<AssignMessage continueOnError="false" enabled="true" name="remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<FormParams>
(turunan dari <Remove>
)
Menghapus parameter formulir yang ditentukan dari permintaan. Elemen ini tidak berpengaruh pada yang dihasilkan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <FormParam> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Remove> </AssignMessage>
Contoh 1
Contoh berikut menghapus tiga parameter formulir dari permintaan:
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Contoh 2
Contoh berikut menghapus semua parameter formulir dari permintaan:
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Contoh 3
Jika ada beberapa parameter formulir dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Contoh ini menghapus "f1", "f2", dan nilai kedua dari "f3". Jika "f3" hanya memiliki satu , maka tidak dihapus.
Anda hanya dapat menggunakan <FormParams>
jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
Content-Type
: "application/x-www-form-urlencoding"
<Headers>
(turunan dari <Remove>
)
Menghapus header HTTP yang ditentukan dari permintaan atau respons, yang ditentukan oleh
Elemen <AssignTo>
.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <Header> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<Header> |
Elemen <Headers>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Remove> </AssignMessage>
Contoh 1
Contoh berikut menghapus header user-agent
dari permintaan:
<AssignMessage name="remove-headers-1"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh 2
Contoh berikut menghapus semua header dari permintaan:
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh 3
Jika ada beberapa header dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh ini menghapus "h1", "h2", dan nilai kedua dari "h3" dari permintaan. Jika "h3" hanya memiliki satu nilai, maka tidak dihapus.
<Payload>
(turunan dari <Remove>
)
Menentukan apakah <Remove>
akan menghapus payload dalam permintaan atau respons, yang
yang ditentukan oleh elemen <AssignTo>
. Tetapkan ke "true" dapat
menghapus {i>payload<i}; sebaliknya, "false". Nilai defaultnya adalah "false".
Nilai Default | Salah |
Wajib? | Opsional |
Jenis | Boolean |
Elemen Induk |
<Remove>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <Payload>[false|true]</Payload> </Remove> </AssignMessage>
Contoh 1
Contoh berikut menetapkan <Payload>
ke "benar" sehingga payload permintaan
dihapus:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(turunan dari <Remove>
)
Menghapus parameter kueri yang ditentukan dari permintaan. Elemen ini tidak berpengaruh pada yang dihasilkan.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array dari elemen <QueryParam> atau array kosong |
Elemen Induk |
<Remove>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Remove> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> </AssignMessage>
Contoh 1
Contoh berikut menghapus satu parameter kueri dari permintaan:
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh 2
Contoh berikut menghapus semua parameter kueri dari permintaan:
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh 3
Jika ada beberapa parameter kueri dengan nama yang sama, gunakan sintaksis berikut:
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Contoh ini menghapus "qp1", "qp2", dan nilai kedua dari "qp3" dari permintaan. Jika "qp3" hanya memiliki satu nilai, maka tidak dihapus.
Contoh 4
Contoh berikut menghapus parameter kueri apikey
dari permintaan:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Anda hanya dapat menggunakan <QueryParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
<Set>
Menetapkan informasi dalam pesan permintaan atau respons, yang ditentukan oleh atribut
Elemen <AssignTo>
. <Set>
menimpa header atau
parameter yang sudah ada dalam pesan asli. Untuk membuat {i>header<i} atau parameter baru, gunakan
elemen <Add>
sebagai gantinya.
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:
Sintaksis
<AssignMessage 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> <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 1
Contoh berikut menunjukkan elemen <Set>
:
<AssignMessage continueOnError="false" enabled="true" name="set-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> <QueryParams> <QueryParam name="name">{request.header.name}</QueryParam> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> <!-- <Verb>GET</Verb> --> <Payload contentType="text/plain">42</Payload> <Path/> <ReasonPhrase>Bad request</ReasonPhrase> <StatusCode>400</StatusCode> <Verb>POST</Verb> <Verb>{my_variable}</Verb> <Version>1.1</Version> </Set> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
<FormParams>
(turunan dari <Set>
)
Menimpa parameter formulir yang ada pada permintaan dan menggantinya dengan nilai baru yang dengan elemen ini. Elemen ini tidak berpengaruh pada respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <FormParam> |
Elemen Induk |
<Set>
|
Elemen Turunan |
<FormParam> |
Elemen <FormParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan parameter formulir bernama "myparam" dengan nilai
Variabel request.header.myparam
dalam permintaan kustom baru:
<AssignMessage name="set-formparams-1"> <Set> <FormParams> <FormParam name="myparam">{request.header.myparam}</FormParam> </FormParams> </Set> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
Anda hanya dapat menggunakan <FormParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: POST
- Jenis pesan: Permintaan
Jika Anda menetapkan parameter formulir kosong dalam kebijakan
(<Add><FormParams/></Add>
), kebijakan ini tidak menambahkan formulir apa pun
parameter. 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>
)
Timpa 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:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan header user-agent
ke nilai atribut
Variabel request.header.user-agent
:
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Jika Anda menentukan header kosong dalam kebijakan
(<Add><Headers/></Add>
), kebijakan ini tidak menambahkan header apa pun. Ini
sama dengan menghilangkan <Headers>
.
<Path>
(turunan dari <Set>
)
<Payload>
(turunan dari <Set>
)
Menentukan isi pesan untuk permintaan atau respons, yang ditentukan oleh atribut
Elemen <AssignTo>
. Payload dapat berupa jenis konten apa pun yang valid, seperti
teks, JSON, atau XML.
Nilai Default | string kosong |
Wajib? | Opsional |
Jenis | String |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Payload>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan payload teks biasa:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
Contoh 2
Contoh berikut menetapkan payload JSON:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
Contoh 3
Contoh berikut memasukkan nilai variabel ke dalam payload dengan menggabungkan nama variabel dalam tanda kurung kurawal:
<AssignMessage name="set-payload-3"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set> </AssignMessage>
Dalam versi Apigee Edge yang lebih lama—misalnya, sebelum rilis cloud 16.08.17—Anda dapat
tidak menggunakan tanda kurung kurawal untuk menunjukkan referensi variabel dalam payload JSON. Dalam rilis tersebut, Anda
perlu menggunakan atribut variablePrefix
dan variableSuffix
untuk
menentukan karakter pembatas, dan menggunakannya untuk membungkus nama variabel, seperti:
<AssignMessage name="set-payload-3b"> <Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set> </AssignMessage>
Sintaks lama ini masih berfungsi.
Contoh 4
Konten <Payload>
diperlakukan sebagai template pesan. Ini berarti bahwa
Kebijakan TetapkanMessage mengganti variabel yang digabungkan dalam tanda kurung kurawal dengan nilai elemen
variabel yang direferensikan pada runtime.
Contoh berikut menggunakan sintaksis tanda kurung kurawal untuk menetapkan bagian payload ke nilai variabel:
<AssignMessage name="set-payload-4"> <Set> <Payload contentType="text/xml"> <root> <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, tentukan pembatas utama pada variabel alur. Default-nya adalah "{". Sebagai informasi selengkapnya, lihat Referensi variabel flow. | Opsional | Karakter |
variableSuffix |
Secara opsional, tentukan pembatas akhir pada variabel alur. Default-nya adalah "}". Sebagai informasi selengkapnya, lihat Referensi variabel flow. | Opsional | Karakter |
<QueryParams>
(turunan dari <Set>
)
Timpa parameter kueri yang ada dalam permintaan dengan nilai baru. Elemen ini tidak memiliki efek pada respons.
Nilai Default | t/a |
Wajib? | Opsional |
Jenis | Array elemen <QueryParam> |
Elemen Induk |
<Set>
|
Elemen Turunan |
<QueryParam> |
Elemen <QueryParams>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan "alamat" parameter kueri dengan nilai
Variabel request.header.address
:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
Anda hanya dapat menggunakan <QueryParams>
jika kriteria berikut terpenuhi:
- Kata kerja HTTP: GET
- Jenis pesan: Permintaan
Jika Anda menetapkan parameter kueri kosong dalam kebijakan
(<Set><QueryParams/></Set>
), kebijakan tidak menetapkan kueri apa pun
parameter. Ini sama dengan menghilangkan <QueryParams>
.
<ReasonPhrase>
(turunan dari <Set>
)
Menetapkan frasa alasan pada respons. Hal ini biasanya dilakukan untuk {i>debugging<i}
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:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> </Set> </AssignMessage>
Contoh 1
Contoh berikut menentukan frasa alasan sederhana:
<AssignMessage name="set-reasonphrase-1"> <Set> <ReasonPhrase>Bad medicine</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Contoh 2
Konten <ReasonPhrase>
diperlakukan sebagai template pesan. Artinya
nama variabel yang digabungkan dengan tanda kurung kurawal akan diganti saat runtime dengan nilai
variabel yang direferensikan, seperti yang ditampilkan contoh berikut:
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Anda hanya dapat menggunakan <ReasonPhrase>
jika kriteria berikut terpenuhi:
- Jenis pesan: Respons
<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 |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <StatusCode>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <StatusCode>HTTP_status_code or {variable}</StatusCode> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan kode status sederhana:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Contoh 2
Konten <StatusCode>
diperlakukan sebagai template pesan. Ini berarti
nama variabel yang digabungkan dalam tanda kurung kurawal akan diganti saat runtime dengan nilai
variabel yang direferensikan, seperti yang ditampilkan contoh berikut:
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
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 |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Verb>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan kata kerja sederhana pada permintaan:
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Contoh 2
Konten <Verb>
diperlakukan sebagai template pesan. Ini berarti
nama variabel
yang digabungkan dalam tanda kurung kurawal akan diganti saat runtime dengan nilai yang direferensikan
variabel.
Contoh berikut menggunakan variabel untuk mengisi kata kerja:
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
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 |
Jenis | String atau variable |
Elemen Induk |
<Set>
|
Elemen Turunan | Tidak ada |
Elemen <Version>
menggunakan sintaksis berikut:
Sintaksis
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Set> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Contoh 1
Contoh berikut menetapkan nomor versi ke "1.1":
<AssignMessage name="set-version-1"> <Set> <Version>1.1</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Contoh 2
Kode berikut menggunakan variabel dalam tanda kurung kurawal untuk menetapkan nomor versi:
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Konten <Version>
diperlakukan sebagai template pesan. Ini berarti
nama variabel yang digabungkan dalam tanda kurung kurawal akan diganti saat runtime dengan nilai yang direferensikan
variabel.
Anda hanya dapat menggunakan <Version>
jika kriteria berikut terpenuhi:
- Jenis pesan: Permintaan
Membuat pesan permintaan kustom
Anda dapat menggunakan kebijakan MenetapkanMessage untuk membuat pesan permintaan kustom. Setelah Anda membuat 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 MenetapkanMessage
lebih lanjut. Tetapkan createNew
ke "benar" dan tentukan nama pesan baru di bagian isi
elemen, seperti yang ditampilkan contoh berikut:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Secara default, Edge tidak melakukan apa pun dengan pesan permintaan kustom. Setelah membuatnya, Edge akan melanjutkan alur dengan permintaan awal. Untuk menggunakan permintaan kustom, tambahkan kebijakan seperti sebagai kebijakan ServiceInfo ke proxy Anda yang dapat meneruskan permintaan kustom ke layanan.
Contoh berikut membuat pesan permintaan kustom:
Contoh 1
Contoh berikut membuat objek permintaan kustom dengan Tetapkan Pesan:
<AssignMessage name="AssignMessage-3"> <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo> <Copy> <Headers> <Header name="user-agent"/> </Headers> </Copy> <Set> <QueryParams> <QueryParam name="address">{request.queryparam.addy}</QueryParam> </QueryParams> <Verb>GET</Verb> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
Contoh ini:
- Membuat objek pesan permintaan baru bernama "MyCustomRequest".
- Di MyCustomRequest, kebijakan ini:
- Menyalin nilai header HTTP
user-agent
dari header HTTP login pesan baru tersebut. Karena<Copy>
menggunakan referensi absolut ke Variabel aluruser-agent
, tidak ada harus menentukan atributsource
untuk<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". Saat<IgnoreUnresolvedVariables>
adalah "false", jika salah satu variabel yang akan ditambahkan oleh kebijakan tidak ada, Edge akan berhenti dalam alur API.
Contoh 2
Berikut ini contoh lain yang menunjukkan cara membuat objek permintaan kustom dengan Menetapkan Pesan:
<AssignMessage name="AssignMessage-2"> <AssignTo createNew="true" type="request">partner.request</AssignTo> <Set> <Verb>POST</Verb> <Payload contentType="text/xml"> <request><operation>105</operation></request> </Payload> </Set> </AssignMessage>
Contoh ini membuat permintaan kustom baru bernama "partner.request". Kemudian menyetel
<Verb>
dan <Payload>
pada permintaan baru.
Anda dapat mengakses pesan permintaan khusus di kebijakan Menetapkan Pesan lain yang terjadi nanti dalam
dengan aliran data. Contoh berikut mendapatkan nilai dari
Header user-agent
:
<AssignMessage name="custom-request-1-access"> <DisplayName>custom-request-1-access</DisplayName> <AssignTo createNew="false" type="request"></AssignTo> <Set> <Headers> <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header> </Headers> </Set> </AssignMessage>
Video
Tonton video berikut untuk mempelajari lebih lanjut kebijakan TetapkanMessage.
Video | Deskripsi |
---|---|
Mengapa Menetapkan Kebijakan Pesan? | Pelajari manfaat penggunaan kebijakan MenetapkanMessage untuk mengubah permintaan API atau tanpa mengubah kode backend. |
Menyalin elemen API menggunakan kebijakan TetapkanMessage | Menyalin elemen dari permintaan atau respons API dan membuat permintaan atau respons baru menggunakan kebijakan MenetapkanMessage. |
Hapus API elemen yang menggunakan kebijakan MenetapkanMessage | Hapus elemen API dan ubah API sebelum mencapai backend target menggunakan Kebijakan TetapkanMessage. |
Menambahkan dan menyetel API elemen yang menggunakan kebijakan MenetapkanMessage | Ubah permintaan atau respons API dengan menambahkan parameter kueri, header, parameter formulir, atau payload menggunakan kebijakan MenetapkanMessage. |
Buat kustom variabel yang menggunakan kebijakan MenetapkanMessage | Tetapkan variabel alur kustom menggunakan kebijakan MenetapkanMessage dan memanfaatkan variabel dalam kebijakan lain dalam proxy API. |
Buat baru objek permintaan atau respons menggunakan kebijakan MenetapkanMessage | Membuat objek permintaan atau respons API baru menggunakan kebijakan MenetapkanMessage di API waktu beroperasi. |
Membuat API tiruan menggunakan kebijakan TetapkanMessage | Buat REST API tiruan sederhana dengan menambahkan kebijakan MenetapkanMessage dalam respons alur kerja. |
Tetapkan atau ubah payload menggunakan kebijakan MenetapkanMessage | Mengubah permintaan REST ke permintaan SOAP dengan menetapkan SOAP Payload menggunakan kebijakan MenetapkanMessage kebijakan pada 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 error untuk menangani error. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani error.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kerusakan | Status HTTP | Penyebab | Perbaiki |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Kebijakan tidak dapat menetapkan variabel. Lihat string error untuk nama variabel yang belum terselesaikan. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Error ini terjadi jika atribut Variabel jenis pesan mewakili seluruh permintaan dan respons HTTP. Variabel alur Edge bawaan |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Error ini terjadi jika variabel yang ditentukan dalam kebijakan Tetapkan Pesan adalah:
|
build |
Error saat deployment
Error ini dapat terjadi saat Anda men-deploy proxy yang berisi kebijakan ini.
Nama error | Penyebab | Perbaiki |
---|---|---|
InvalidIndex |
Jika indeks yang ditentukan dalam elemen <Copy> dan/atau <Remove> dari kebijakan Tetapkan Pesan adalah 0 atau bilangan negatif, 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 yang valid untuk menetapkan nilai. Nama variabel yang valid wajib diisi.
|
build |
InvalidPayload |
Payload yang ditentukan dalam kebijakan tidak valid. |
Variabel error
Variabel ini ditetapkan saat kebijakan ini memicu error saat runtime. Untuk informasi selengkapnya, lihat Yang perlu Anda ketahui tentang error kebijakan.
Variabel | Di mana | Contoh |
---|---|---|
fault.name="fault_name" |
fault_name adalah nama error, seperti yang tercantum dalam tabel Runtime errors 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 error. | 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 error
<faultrule name="VariableOfNonMsgType"></faultrule><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
Bekerja contoh kebijakan MenetapkanMessage tersedia di contoh Platform API.
Untuk contoh lanjutan selengkapnya tentang cara mengganti target.url
dari
ProxyEndpoint, lihat artikel Komunitas Apigee ini.
Untuk melihat "tetapkan jalur" saat diterapkan dalam kebijakan Servicecallout, lihat Learn by do example ini pada contoh GitHub Apigee. Cukup clone repositori dan ikuti petunjuk dalam topik tersebut. Contoh ini menggunakan kebijakan MenetapkanMessage untuk menyetel jalur permintaan, kemudian menggunakan kebijakan Service Keterangan untuk membuat permintaan ke layanan eksternal.