Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
UnresolvedVariable
Kode error
steps.assignmessage.UnresolvedVariable
Isi respons error
{ "fault": { "faultstring": "AssignMessage[policy_name]: unable to resolve variable [variable_name]", "detail": { "errorcode": "steps.assignmessage.UnresolvedVariable" } } }
Penyebab
Error ini terjadi jika variabel yang ditentukan dalam kebijakan Tetapkan Pesan:
- di luar cakupan (tidak tersedia dalam alur spesifik tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
Misalnya, error ini terjadi jika kebijakan Tetapkan Pesan dieksekusi dalam alur permintaan, tetapi atribut source
di elemen <Copy>
disetel ke variabel response
atau error
atau variabel kustom lainnya yang tidak ada dalam alur permintaan.
Diagnosis
Mengidentifikasi Kebijakan Menetapkan Pesan tempat terjadinya error dan nama variabel yang tidak tersedia. Anda dapat menemukan kedua item ini di elemen
faultstring
respons error.Misalnya, dalam
faultstring
berikut, nama kebijakannya adalahgoogleBook
dan variabelnya adalahvar
:"faultstring": "AssignMessage[googleBook]: unable to resolve variable var"
Dalam XML Menetapkan Pesan Pesan yang gagal, verifikasi bahwa nama variabel yang digunakan cocok dengan nama variabel yang diidentifikasi dalam string fault (langkah #1 di atas). Misalnya, kebijakan berikut menetapkan atribut sumber dalam elemen
<Copy>
ke variabel bernamavar
, yang cocok dengan yang ada difaultstring
:<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1"> <DisplayName>googleBook</DisplayName> <Properties /> <Copy source="var"> <Headers> <Header name="user-agent" /> </Headers> </Copy> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo> </AssignMessage>
Tentukan apakah variabel ditetapkan dan tersedia dalam alur tempat kebijakan Tetapkan Pesan dijalankan.
Jika variabelnya adalah:
- di luar cakupan (tidak tersedia dalam alur spesifik tempat kebijakan dijalankan) atau
- tidak dapat diselesaikan (tidak ditentukan)
maka itulah penyebab {i>error<i}.
Sebagai contoh, misalkan kebijakan Tetapkan Pesan yang ditampilkan di atas dijalankan dalam alur permintaan. Periksa apakah variabel
var
ditentukan di salah satu kebijakan yang dijalankan sebelum kebijakan Tetapkan Pesan dalam alur permintaan. Jika variabel belum ditentukan, Anda akan menerima kode error:steps.assignmessage.UnresolvedVariable
Resolusi
Pastikan variabel yang dirujuk dalam kebijakan ada dan tersedia dalam alur tertentu, tempat kebijakan Tetapkan Pesan dijalankan.
Untuk memperbaiki contoh kebijakan yang ditampilkan di atas, Anda dapat mengubah atribut sumber dalam elemen <Copy>
menjadi variabel permintaan atau variabel kustom lainnya dari pesan jenis yang ada di alur permintaan.
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Message-1">
<DisplayName>googleBook</DisplayName>
<Properties />
<Copy source="request">
<Headers>
<Header name="user-agent" />
</Headers>
</Copy>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">googleBookReq</AssignTo>
</AssignMessage>
VariableOfNonMsgType
Kode error
steps.assignmessage.VariableOfNonMsgType
Isi respons error
{ "fault": { "faultstring": "AssignMessage[policy_name]: value of variable [variable] is not of type Message", "detail": { "errorcode": "steps.assignmessage.VariableOfNonMsgType" } } }
Penyebab
Error ini terjadi jika atribut source
dalam elemen <Copy>
disetel ke variabel yang bukan berjenis pesan.
Variabel jenis pesan mewakili seluruh permintaan dan respons HTTP. Variabel alur Edge bawaan request
, response
, dan message
merupakan jenis pesan. Untuk mempelajari variabel pesan lebih lanjut, lihat Referensi variabel.
Diagnosis
Mengidentifikasi Kebijakan Menetapkan Pesan tempat terjadinya error dan nama variabel yang jenisnya salah. Anda dapat menemukan kedua item ini di elemen
faultstring
respons error. Misalnya, dalamfaultstring
berikut, nama kebijakannya adalahGenerateGeocodingRequest
dan variabelnya adalahPostalCode
:"faultstring": "AssignMessage[GenerateGeocodingRequest]: value of variable PostalCode is not of type Message"
Dalam XML Menetapkan Pesan Kebijakan yang gagal, pastikan nama variabel yang ditetapkan dalam elemen
<Copy>
cocok dengan nama variabel yang diidentifikasi dalam string fault (langkah #1 di atas). Misalnya, kebijakan berikut menetapkan atribut sumber ke variabel bernamaPostalCode
, yang cocok dengan yang ada difaultstring
:<AssignMessage name="GenerateGeocodingRequest"> <AssignTo createNew="true" type="request">GeocodingRequest</AssignTo> <AssignVariable> <Name>PostalCode</Name> <Ref>request.queryparam.postalcode</Ref> </AssignVariable> <AssignVariable> <Name>Country</Name> <Ref>request.queryparam.country</Ref> </AssignVariable> <Copy source="PostalCode"> <QueryParams> <QueryParam name="q" /> </QueryParams> </Copy> </AssignMessage>
Tentukan apakah variabel ini berjenis pesan atau bukan:
- Cari kode dalam paket Proxy API, tempat variabel ditentukan terlebih dahulu.
- Setelah mengetahui kebijakan tempat variabel ditetapkan dan diisi terlebih dahulu, Anda harus menentukan jenis variabel tersebut seperti berikut:
- Periksa nilai atribut jenis (jika ada).
- Jika atribut jenis tidak ada, variabel tersebut dianggap sebagai string.
- Jika jenis variabel bukan pesan (seperti string), maka itulah penyebab error. Anda dapat mempelajari variabel umum dan jenisnya dalam Referensi variabel.
Misalnya, lihat variabel postalCode dalam XML di atas. Nilai ini diberi nilai variabel flow
request.queryparam.postalcode
di elemen<AssignVariable>
. Nilai ini berupa string karena tidak ada atribut jenis dalam penetapan variabel.Sekarang, ingat bahwa variabel POSCode digunakan dalam elemen
<Copy>
pada kebijakan Tetapkan Pesan:<Copy source="PostalCode"> <QueryParams> <QueryParam name="PostalCode" /> </QueryParams> </Copy>
Karena Kode Pos bukan pesan jenis (dalam contoh ini adalah string), Anda akan menerima kode error:
steps.assignmessage.VariableOfNonMsgType
Resolusi
Pastikan atribut source
di elemen <Copy>
di kebijakan Tetapkan Pesan yang gagal disetel ke variabel alur jenis pesan yang ada.
Untuk memperbaiki kebijakan, Anda dapat mengubah atribut source
di elemen <Copy>
untuk menentukan variabel yang berjenis pesan. Misalnya, jika kebijakan Tetapkan Pesan seharusnya dijalankan dalam alur permintaan, Anda dapat menggunakan variabel jenis pesan request
atau variabel kustom lainnya dari pesan jenis.
<AssignMessage name="GenerateGeocodingRequest">
<AssignTo createNew="true" type="request">GeocodingRequest</AssignTo>
<AssignVariable>
<Name>PostalCode</Name>
<Ref>request.queryparam.postalcode</Ref>
</AssignVariable>
<AssignVariable>
<Name>Country</Name>
<Ref>request.queryparam.country</Ref>
</AssignVariable>
<Copy source="request">
<QueryParams>
<QueryParam name="PostalCode" />
</QueryParams>
</Copy>
</AssignMessage>