Yang perlu Anda ketahui tentang error kebijakan

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

Topik ini menjelaskan struktur error kebijakan dan jenis variabel alur yang ditetapkan saat terjadi error kebijakan. Informasi ini penting jika Anda mendesain dan menerapkan penanganan gangguan untuk proxy.

Topik ini mengasumsikan bahwa Anda memiliki pemahaman umum tentang cara kerja penanganan error di Edge, dan bahwa Anda mengetahui apa itu aturan error. Jika Anda memerlukan tinjauan, lihat Menangani error. Informasi di sini juga akan membantu Anda menavigasi dan menggunakan Referensi error kebijakan.

Tentang respons error kebijakan default

Saat kebijakan menampilkan error, Edge akan segera memasuki alur error dan membuat pesan error message. Pesan yang dibuat sistem ini adalah objek JSON yang menyertakan dua informasi: an errorcode dan a faultstring.

Contoh:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

Mari kita dekonstruksi pesan error ini dengan cepat:

The errorcode terdiri dari prefix dan error name, sebagai berikut: [prefix].[error_name]. Pada contoh di atas "steps.extractvariables" adalah awalan dan SourceMessageNotAvailable adalah nama error. Awalan memberi tahu Anda jenis kebijakan yang menghasilkan error. Pada contoh di atas Anda dapat mengetahui bahwa kebijakan Extract Variables menghasilkan error dan nama errornya adalah SourceMessageNotAvailable.

faultstring berisi deskripsi error. String error biasanya menyertakan petunjuk untuk membantu Anda menemukan masalah spesifik yang menyebabkan error, seperti nama kebijakan, nama variabel yang tidak dapat diselesaikan, atau apa pun yang menyebabkan error. Misalnya, dalam pesan error di atas, "foo" adalah nama variabel pesan yang tidak dapat diselesaikan yang direferensikan dalam kebijakan dan "ParseJsonResponse" adalah nama kebijakan yang memicu error.

Variabel khusus untuk error kebijakan

Saat error kebijakan dipicu, variabel alur khusus error tertentu akan diisi. Variabel ini sangat berguna dalam penanganan error. Seperti yang dijelaskan dalam topik Menangani error, praktik umum untuk menangkap error kebijakan yang dibuat sistem dan melakukan tindakan berikutnya seperti membuat respons error kustom. Misalnya, karena alasan keamanan, Anda mungkin ingin mencegah klien melihat error dan kode status sebenarnya yang ditampilkan Edge.

Variabel fault.name

Saat kebijakan menampilkan error, kebijakan tersebut akan menetapkan flow variable fault.name ke bagian error_name dari errorcode (seperti yang dijelaskan di bagian sebelumnya). Sangat umum untuk mengevaluasi variabel ini untuk menjalankan aturan error secara kondisional.

Berikut adalah contoh aturan error yang menguji nilai fault.name:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

Hal yang perlu diingat adalah bahwa saat kebijakan memicu error, variabel fault.name selalu ditetapkan ke nama error.

Variabel [prefix].[policy_name].failed

Selain fault.name, variabel lain yang biasanya diperiksa oleh developer adalah flag [prefix].[policy_name].failed, yang ditetapkan ke benar (true) atau salah (false) saat kebijakan dijalankan. Dalam aturan error, Anda harus memeriksa kapan nilai benar (true) -- yaitu, untuk memeriksa apakah terjadi error. Berikut cara membuat kondisional yang memeriksa flag [prefix].[policy_name].failed. Untuk memeriksa variabel ini dengan benar, Anda harus mengetahui dua hal:

  • Nama kebijakan yang Anda periksa. Ini adalah nilai atribut nama kebijakan, bukan nama tampilan. Atribut ini selalu disertakan dalam XML definisi kebijakan.
  • Awalan yang khusus untuk jenis kebijakan yang Anda periksa. (Kami akan menjelaskan cara menemukan awalan di bawah.)

Untuk mengilustrasikan, berikut adalah contoh aturan error lainnya. Perhatikan dalam kondisi luar bagaimana nama variabel [prefix].[policy_name].failed dibentuk. Dalam hal ini, awalan adalah extractvariables dan nama kebijakan adalah ParseJsonResponse. Dalam hal ini, aturan error hanya akan dijalankan jika variabel ini benar (true). Berikut tipsnya: karena aturan error dapat berisi beberapa langkah, pola ini adalah cara yang baik untuk mengatur aturan error ke dalam blok.

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

Tentang variabel error dan message

Variabel error hanya tersedia dalam alur error proxy. Anda bisa mendapatkan informasi berguna dari variabel error, seperti pesan error, kode status kode, frasa alasan, dan sebagainya. Pola pemformatan untuk variabel error adalah:

error.[error_component] = [value]

Contoh:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse"

dan

error.status.code = "500"

Variabel message juga tersedia dalam alur error dan dapat digunakan untuk tujuan yang sama dengan variabel error. Variabel pesan bersifat khusus karena it bersifat kontekstual. Dalam alur permintaan, variabel ini berperilaku seperti variabel permintaan, dan dalam alur respons, variabel ini dapat digunakan untuk mendapatkan/menetapkan nilai respons. Jika ingin mengetahui lebih lanjut, lihat Kasus penggunaan variabel pesan.

Lihat Referensi variabel untuk mengetahui informasi tentang semua variabel Edge, termasuk error dan message.