Yang perlu Anda ketahui tentang error kebijakan

Anda sedang 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 sangat penting jika Anda merancang dan mengimplementasikan penanganan fault untuk proxy Anda.

Topik ini mengasumsikan bahwa Anda memiliki pemahaman umum tentang cara kerja penanganan kesalahan di Edge, dan telah mengetahui apa itu aturan fault. Jika Anda perlu peninjauan, lihat Menangani kesalahan. Informasi di sini juga akan membantu Anda membuka dan menggunakan Referensi error kebijakan.

Tentang respons error kebijakan default

Saat kebijakan menampilkan error, Edge akan segera memasuki alur error dan menghasilkan pesan error. Pesan yang dihasilkan sistem ini adalah objek JSON yang menyertakan dua bit informasi: errorcode dan faultstring.

Contoh:

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

Mari kita uraikan pesan error ini dengan cepat:

errorcode terdiri dari awalan dan nama error, seperti 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 Ekstrak Variabel menghasilkan error dan nama error-nya adalah SourceMessageNotAvailable.

faultstring berisi deskripsi error. String kesalahan biasanya mencakup petunjuk untuk membantu Anda menemukan masalah tertentu yang menyebabkan error, seperti nama kebijakan, nama variabel yang belum terselesaikan, atau apa pun yang menyebabkan error. Misalnya, dalam pesan error di atas, "foo" kebetulan adalah nama variabel pesan yang belum terselesaikan yang dirujuk dalam kebijakan dan "ParseJsonResponse" adalah nama kebijakan yang memicu error.

Variabel khusus untuk error kebijakan

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

Variabel fault.name

Saat menampilkan error, kebijakan akan menetapkan variabel flow fault.name ke bagian error_name dari kode error (seperti yang dijelaskan di bagian sebelumnya). Sangatlah umum untuk mengevaluasi variabel ini untuk mengeksekusi aturan fault secara kondisional.

Berikut adalah contoh aturan kesalahan 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 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 developer adalah flag [prefix].[policy_name].failed, yang disetel ke benar (true) atau salah (false) saat kebijakan dijalankan. Dalam aturan kesalahan, Anda dapat memeriksa apakah nilainya benar -- yaitu, untuk memeriksa apakah terjadi error. Berikut cara membuat kondisional yang memeriksa flag [prefix].[policy_name].failed. Untuk memeriksa variabel ini dengan benar, Anda perlu 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 dikhususkan untuk jenis kebijakan yang Anda periksa. (Kami akan menjelaskan cara menemukan awalan tersebut di bawah.)

Sebagai ilustrasi, berikut ini contoh aturan kesalahan lainnya. Perhatikan kondisi luar bagaimana nama variabel [prefix].[policy_name].failed terbentuk. Dalam hal ini, awalannya adalah extractvariables dan nama kebijakannya adalah ParseJsonResponse. Dalam hal ini, aturan fault hanya akan dijalankan jika variabel ini bernilai benar (true). Dan, berikut tipsnya: karena aturan fault dapat berisi beberapa langkah, pola ini adalah cara yang bagus untuk mengatur aturan fault 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 yang berguna dari variabel error, seperti pesan error, kode status, frasa alasan, dan sebagainya. Pola format 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 di alur error dan dapat digunakan untuk tujuan yang serupa dengan variabel error. Variabel pesan bersifat khusus karena bersifat kontekstual. Dalam alur permintaan, alur ini berperilaku seperti variabel permintaan, dan dalam alur respons, ini dapat digunakan untuk mendapatkan/menetapkan nilai respons. Jika Anda ingin mengetahui selengkapnya, lihat Kasus penggunaan untuk variabel pesan.

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