Saat permintaan API dibuat melalui Apigee, Router dan Pemroses Pesan komponen Apigee, atau server backend dapat menampilkan error ke aplikasi klien.
Error dari Pemroses Pesan
Pemroses Pesan adalah komponen inti Apigee yang memproses kebijakan dan berinteraksi dengan server backend. API ini dapat menampilkan error jika mendeteksi masalah seperti:
Masalah konektivitas jaringan, kegagalan handshake TLS, tidak tersedianya server backend, kurangnya respons selama komunikasi dengan server backend
Kegagalan selama eksekusi kebijakan
Header HTTP tidak valid, encoding, jalur, ketidakpatuhan terhadap spesifikasi HTTP, melampaui
batas produk, dll.:
Dengan permintaan HTTP yang dikirim aplikasi klien
ATAU
Dengan respons HTTP yang dikirim oleh server backend
Dan banyak lagi
Contoh error dari Pemroses Pesan
Pemroses Pesan selalu menampilkan kode status HTTP yang diikuti dengan pesan error beserta kode error dalam format JSON seperti yang ditunjukkan di bawah ini:
Aplikasi klien mendapatkan kode respons seperti contoh berikut:
HTTP/1.1 504 Gateway Timeout
Respons error dari Pemroses Pesan muncul dalam format berikut:
Berisi pesan error yang menjelaskan kemungkinan penyebab error
errorcode
Kode error (juga disebut sebagai kode kesalahan) yang terkait dengan error
reason
Berisi pesan yang menunjukkan kemungkinan alasan error
Katalog error runtime
Katalog error ini menyediakan semua informasi yang perlu Anda ketahui tentang kode error runtime (untuk error non-kebijakan) yang ditampilkan oleh komponen Apigee Message Processor. Artikel ini menyertakan informasi berikut untuk setiap kode error:
Kode Status HTTP
Pesan error
Alasan error (tidak semua pesan error menampilkan
reason)
Kemungkinan penyebab error
Spesifikasi HTTP dan/atau batas produk apa pun yang terkait
Playbook dan video yang berisi petunjuk untuk mendiagnosis penyebab error dan solusi efektif yang dapat Anda terapkan untuk mengatasi error sendiri (jika tersedia)
Perbaiki bahwa Anda dapat menerapkan untuk mengatasi error sendiri
Gunakan kotak Search di bawah ini untuk memfilter tabel guna menampilkan informasi di atas
untuk kode error tertentu. Anda dapat menelusuri kode status atau konten apa pun di kolom mana pun
dalam tabel.
searchPenelusuran
Kode error
Deskripsi
Perbaikan
flow.*
flow.APITimedOut
Kode status HTTP:
504 Gateway Timeout
Pesan error:
API timed out
Kemungkinan penyebab:
Error ini terjadi jika:
Server backend tidak merespons kembali dalam periode waktu tunggu yang dikonfigurasi
oleh properti
api.timeout untuk Proxy API tertentu.
Kebijakan memerlukan waktu lama karena operasi yang intensif secara komputasi, beban
tinggi, atau performa yang buruk.
Encoding yang ditentukan dalam header permintaan HTTP Content-Encoding valid dan didukung oleh Apigee,
TETAPI
Format payload yang dikirim oleh klien sebagai bagian dari permintaan HTTP tidak cocok dengan format encoding yang ditentukan dalam header Content-Encoding
Encoding yang ditentukan dalam header respons HTTP server target/backend Content-Encoding valid dan didukung oleh Apigee,
TETAPI
Format payload yang dikirim oleh server backend/target sebagai
bagian dari respons HTTP tidak cocok dengan format encoding yang ditentukan dalam
header Content-Encoding
messaging.adaptors.http.flow.ErrorResponseCode
Kode status HTTP:
500
Pesan error:
Format dan Pesan Error dapat bervariasi bergantung pada penerapan server backend.
Kemungkinan penyebab:
Error ini terjadi jika server backend merespons dengan kode status 500 ke Apigee.
Kode status HTTP:
503
Pesan error:
Format dan Pesan Error dapat bervariasi bergantung pada penerapan server backend.
Kemungkinan penyebab:
Error ini terjadi jika server backend merespons dengan kode status 503 ke Apigee.
Kode status HTTP:
504
Pesan error:
Format dan Pesan Error dapat bervariasi bergantung pada penerapan server backend.
Kemungkinan penyebab:
Error ini terjadi jika server backend merespons dengan kode status 504 ke Apigee.
Catatan: Kode error
messaging.adaptors.http.flow.ErrorResponseCode tidak ditampilkan
sebagai bagian dari pesan error yang dikirim ke aplikasi klien. Hal ini karena kode error ini ditetapkan oleh Apigee setiap kali server backend merespons dengan error dan kode status 4XX atau 5XX. Anda dapat melihat kode error ini di Pemantauan API atau database analisis.
messaging.adaptors.http.flow.GatewayTimeout
Kode status HTTP:
504 Gateway Timeout
Pesan error:
Gateway Timeout
Alasan:
TARGET_READ_TIMEOUT
Kemungkinan penyebab:
Error ini terjadi jika server backend tidak merespons kembali
Pemroses Pesan Apigee dalam
periode waktu tunggu I/O yang dikonfigurasi pada Pemroses Pesan.
messaging.adaptors.http.flow.LengthRequired
Kode status HTTP:
411 Length Required
Pesan error:
'Content-Length' is missing
Alasan:
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED
Kemungkinan penyebab:
Error ini terjadi jika header Content-Length tidak diteruskan oleh
aplikasi klien sebagai bagian dari permintaan POST dan PUT HTTP
yang dikirim ke Apigee.
Catatan: Permintaan yang gagal dengan error ini tidak dapat ditangkap dalam alat Rekaman Aktivitas, karena Pemroses Pesan melakukan validasi ini pada fase yang sangat awal, jauh sebelum memproses permintaan dan mengeksekusi kebijakan apa pun di Proxy API.
Untuk mengatasi error ini, lakukan langkah-langkah berikut:
Pastikan aplikasi klien selalu meneruskan header Content-Length sebagai bagian dari permintaan POST dan PUT HTTP yang dikirim ke Apigee. Contoh:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Meskipun Anda meneruskan payload kosong dengan permintaan POST dan PUT, pastikan header Content-Length: 0 diteruskan. Contoh:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
Kode status HTTP:
503 Service Unavailable
Pesan error:
The Service is temporarily unavailable
Alasan:
TARGET_HEALTHCHECK_CONNECT_TIMEOUT
TARGET_HEALTHCHECK_CONNECTION_REFUSED
TARGET_HEALTHCHECK_HTTPS_REQUEST_OVER_HTTP
TARGET_HEALTHCHECK_UNEXPECTED_EOF
Kemungkinan penyebab:
Error ini terjadi pada salah satu skenario berikut, jika Anda menggunakan
TargetServer di Apigee:
Resolusi DNS yang salah pada host server backend oleh server otorisasi kustom mengakibatkan alamat IP buruk yang menyebabkan error koneksi.
Error waktu tunggu koneksi habis karena:
Pembatasan firewall pada server backend mencegah Apigee terhubung ke server backend.
Masalah konektivitas jaringan antara Apigee
dan server backend.
Host yang ditetapkan dalam TargetServer salah atau memiliki karakter yang tidak diinginkan (seperti spasi).
Error ini juga dapat terjadi jika health check yang dikonfigurasi untuk memantau health check server target gagal.
messaging.adaptors.http.flow.RequestTimeOut
Kode status HTTP:
408 Request Timeout
Pesan error:
Request timed out
Alasan:
CLIENT_READ_TIMEOUT
Kemungkinan penyebab:
Error ini terjadi jika Pemroses Pesan Apigee tidak menerima payload permintaan dari aplikasi klien untuk periode waktu tunggu I/O yang dikonfigurasi pada komponen Pemroses Pesan.
Perbaikan
Pastikan aplikasi klien mengirim payload permintaan dalam periode waktu tunggu I/O yang dikonfigurasi pada komponen Pemroses Pesan Apigee.
messaging.adaptors.http.flow.ServiceUnavailable
Kode status HTTP:
503 Service Unavailable
Pesan error:
The Service is temporarily unavailable
Alasan:
TARGET_CONNECT_TIMEOUT
TARGET_WRITE_BROKEN_PIPE
TARGET_WRITE_CONNECTION_RESET_BY_PEER
TARGET_CONNECT_CONNECTION_REFUSED
Kemungkinan penyebab:
Error ini terjadi dalam salah satu skenario berikut:
Resolusi DNS yang salah pada host server backend oleh server otorisasi kustom mengakibatkan alamat IP buruk yang menyebabkan error koneksi.
Error waktu tunggu koneksi berakhir karena:
Pembatasan firewall pada server backend mencegah Apigee terhubung ke server backend.
Masalah konektivitas jaringan antara Apigee dan server backend.
Host server target yang ditentukan dalam Endpoint Target salah atau memiliki karakter yang tidak diinginkan (seperti spasi).
Error ini juga dapat terjadi jika server backend menutup koneksi lebih awal saat Pemroses Pesan masih mengirim payload permintaan ke server backend.
messaging.adaptors.http.flow.SslHandshakeFailed
Kode status HTTP:
503 Service Unavailable
Pesan error:
SSL Handshake failed {error_message}
Kemungkinan penyebab:
Error ini terjadi selama proses handshake SSL antara Pemroses Pesan Apigee dan server backend jika:
Truststore Pemroses Pesan Apigee:
Berisi rantai sertifikat yang tidak cocok dengan rantai sertifikat
lengkap server backend
ATAU
Tidak berisi rantai sertifikat lengkap server backend
Rantai sertifikat yang disajikan oleh server backend:
Berisi Nama Domain Berkualitas Sepenuhnya (FQDN) yang tidak cocok dengan nama host yang ditentukan di endpoint target
Error ini terjadi dalam salah satu skenario berikut:
TargetServer tidak dikonfigurasi dengan benar untuk mendukung koneksi TLS/SSL
di Apigee.
Server backend dapat menutup koneksi secara tiba-tiba,
sementara Apigee sedang menunggu respons dari server backend.
Pertahankan waktu tunggu aktif yang tidak dikonfigurasi dengan benar di Apigee dan server backend.
messaging.runtime.*
messaging.runtime.RouteFailed
Kode status HTTP:
500 Internal Server Error
Pesan error:
Unable to route the message to a TargetEndpoint
Kemungkinan penyebab:
Error ini terjadi jika Apigee tidak dapat mengarahkan permintaan ke salah satu TargetEndpoint karena:
Tidak ada kondisi aturan rute (<RouteRule>) yang
cocok dengan permintaan dalam proxy
DAN
Tidak ada aturan rute default yang ditentukan dalam ProxyEndpoint (yaitu, <RouteRule> tanpa kondisi apa pun)
Perbaikan
Untuk mengatasi error ini, ikuti petunjuk berikut:
Tinjau aturan rute yang ditentukan di ProxyEndpoint Anda, lalu ubah untuk memastikan bahwa
setidaknya ada satu kondisi aturan rute yang cocok dengan permintaan Anda.
Sebaiknya tentukan aturan rute default tanpa kondisi jika Anda memiliki beberapa RouteRules.
Pastikan aturan rute default selalu ditetapkan terakhir dalam daftar Rute kondisional karena aturan dievaluasi dari atas ke bawah di ProxyEndpoint.
Untuk mempelajari lebih lanjut cara menentukan kondisi <RouteRule> di
ProxyEndpoint, lihat
Target Bersyarat.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Kode status HTTP:
500 Internal Server Error
Pesan error:
Bad Form Data
Kemungkinan penyebab:
Error ini terjadi jika dan hanya jika semua kondisi berikut terpenuhi:
Permintaan HTTP yang dikirim oleh klien ke Apigee berisi:
Content-Type: application/x-www-form-urlencoded,
dan
Data formulir dengan tanda persen (%), atau tanda persen (%) diikuti dengan karakter heksadesimal tidak valid yang tidak diizinkan sesuai dengan
Formulir - Bagian 17.13.4.1.
Proxy API di Apigee membaca parameter formulir tertentu yang berisi karakter apa pun yang tidak diizinkan menggunakan kebijakan ExtractVariables atau TetapkanMessage dalam alur permintaan.
protocol.http.DuplicateHeader
Kode status HTTP:
400 Bad Request
Pesan error:
Duplicate Header "{header_name}"
Kemungkinan penyebab:
Error ini terjadi jika header HTTP tertentu yang tidak diizinkan memiliki duplikat di Apigee, muncul lebih dari sekali dengan nilai yang sama atau berbeda sebagai bagian dari permintaan HTTP yang dikirim oleh aplikasi klien ke Apigee.
Pastikan permintaan HTTP yang dikirim oleh aplikasi klien ke Apigee selalu berisi nama header yang valid sesuai dengan
RFC 7230, bagian 3.2: Kolom Header.
protocol.http.HeaderNameWithNonAsciiChar
Kode status HTTP:
400 Bad Request
Pesan error:
Header {header_name} contains non ascii character {character}
Kemungkinan penyebab:
Error ini terjadi jika nama header yang dikirim sebagai bagian dari permintaan HTTP
oleh aplikasi klien ke Apigee berisi karakter non-ASCII.
Header {header_name} contains invalid character {character}
Kemungkinan penyebab:
Error ini terjadi jika nama header yang dikirim sebagai bagian dari permintaan HTTP
oleh aplikasi klien ke Apigee berisi karakter yang tidak valid seperti
karakter sama dengan (=), koma (,), titik koma (;), tab, CRLF, dan Newline.
Pastikan bahwa permintaan HTTP yang dikirim oleh aplikasi klien ke Apigee tidak
berisi karakter yang tidak valid dalam nama header sesuai
RFC 7230, bagian 3.2.6: Komponen Nilai Kolom
protocol.http.NoResolvedHost
Kode status HTTP:
503 Service Unavailable
Pesan error:
Unable to resolve host {hostname}
Dengan: {hostname} bersifat dinamis dan nilainya akan berubah sehubungan dengan nama host yang diberikan.
Alasan:
TARGET_CONNECT_HOST_NOT_REACHABLE
Kemungkinan penyebab:
Error ini terjadi jika host server target yang ditentukan salah atau memiliki karakter yang tidak diinginkan (seperti spasi).
protocol.http.InvalidPath
Kode status HTTP:
400 Bad Request
Pesan error:
Invalid path {path}
Kemungkinan penyebab:
Error ini terjadi jika jalur dalam URL permintaan HTTP yang dikirim oleh aplikasi klien
ke Apigee berisi karakter yang tidak diizinkan sesuai dengan spesifikasi
RFC 3986, bagian 3.3: Jalur.
Pastikan jalur dalam URL permintaan HTTP yang dikirim oleh aplikasi klien ke Apigee tidak berisi karakter yang tidak diizinkan
sesuai dengan RFC 3986, bagian 3.3: Jalur.
protocol.http.TooBigBody
Kode status HTTP:
413 Request Entity Too Large
Pesan error:
Body buffer overflow
Kemungkinan penyebab:
Error ini terjadi jika ukuran payload yang dikirim oleh aplikasi klien sebagai bagian dari permintaan HTTP ke Apigee lebih besar dari batas yang diizinkan di Apigee.
Ukuran total semua header permintaan yang dikirim oleh aplikasi klien sebagai bagian dari permintaan HTTP ke Apigee lebih besar dari batas yang diizinkan di Apigee.
Error ini terjadi jika ukuran baris permintaan yang dikirim oleh aplikasi klien
sebagai bagian dari permintaan HTTP ke Apigee lebih besar dari batas yang diizinkan di
Apigee.
Error ini terjadi jika header Content-Encoding yang dikirim oleh klien
sebagai bagian dari respons HTTP berisi format encoding/payload yang tidak
didukung oleh Apigee.
Error ini terjadi jika URL permintaan server backend, yang diwakili oleh variabel alur target.url, berisi jalur yang dimulai dengan tanda tanya (?), bukan garis miring (/), yang tidak valid.
Error ini terjadi jika header HTTP tertentu yang tidak diizinkan memiliki duplikat di Apigee, muncul lebih dari sekali dengan nilai yang sama atau berbeda sebagai bagian dari respons HTTP yang dikirim oleh server backend ke Apigee.
Pastikan respons HTTP yang dikirim oleh server backend ke Apigee selalu berisi nama header yang valid sesuai dengan
RFC 7230, bagian 3.2: Kolom Header.
protocol.http.EmptyPath
Kode status HTTP:
500 Internal Server Error
Pesan error:
Request path cannot be empty
Kemungkinan penyebab:
Error ini terjadi jika URL permintaan HTTP server backend, yang ditunjukkan oleh variabel alur target.url, berisi jalur kosong.
Header {header_name} contains invalid character {character}
Kemungkinan penyebab:
Error ini terjadi jika nama header yang dikirim oleh server backend sebagai bagian dari respons HTTP,
berisi karakter yang tidak valid seperti karakter sama (=), koma (,), titik koma (;), tab,
CRLF, dan Newline.
Proxy refused to create tunnel with response status {status code}
Kemungkinan penyebab:
Error ini terjadi selama pembuatan tunnel antara Apigee dan server backend oleh server proxy karena firewall, ACL (Daftar Kontrol Akses), masalah DNS, ketersediaan ketersediaan server backend, dll.
Catatan:Kode status dalam pesan error
(faultstring) memberikan penyebab tingkat tinggi masalah tersebut.
protocol.http.Response306Reserved
Kode status HTTP:
502 Bad Gateway
Pesan error:
Response Status code 306 is reserved, so can't be used.
Kemungkinan penyebab:
Error ini terjadi jika server backend merespons kembali dengan
kode status 306 ke Apigee.
Kode status 306 ditentukan dalam spesifikasi HTTP versi sebelumnya. Sesuai spesifikasi HTTP saat ini, kode ini dicadangkan dan tidak boleh digunakan.
Error ini terjadi jika respons HTTP dari server backend ke Apigee adalah
204 No Content atau
205 Reset Content, tetapi berisi
isi respons dan/atau satu atau beberapa header berikut:
Error ini terjadi jika ukuran payload yang dikirim oleh aplikasi klien sebagai bagian dari permintaan HTTP ke Apigee lebih besar dari batas yang diizinkan di Apigee.
Error ini terjadi jika ukuran total semua header respons yang dikirim oleh server backend sebagai bagian dari respons HTTP ke Apigee lebih besar dari batas yang diizinkan di Apigee.
Error ini terjadi jika ukuran baris respons yang dikirim oleh server backend sebagai bagian dari respons HTTP ke Apigee lebih besar dari batas yang diizinkan di Apigee Edge.
Error ini terjadi jika header Content-Encoding yang dikirim oleh server backend sebagai bagian dari respons HTTP berisi format encoding/payload yang tidak didukung oleh Apigee.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Kemungkinan penyebab:
Error ini terjadi jika KeyAlias tertentu yang dirujuk dalam TargetEndpoint atau TargetServer tidak ditemukan di Keystore tertentu.
Perbaikan
Pastikan KeyAlias yang ditentukan dalam TargetEndpoint atau TargetServer
ada dan merupakan bagian dari Keystore tertentu.
security.util.TrustStoreWithNoCertificates
Kode status HTTP:
500 Internal Server Error
Pesan error:
TrustStore {truststore_name} has no certificates
Kemungkinan penyebab:
Error ini terjadi jika Truststore tertentu yang dirujuk dalam TargetEndpoint atau
TargetServer tidak berisi sertifikat apa pun.
Perbaikan
Jika Anda ingin memvalidasi sertifikat server backend dan
ingin menggunakan Truststore dalam TargetEndpoint atau TargetServer, pastikan Truststore berisi sertifikat server backend yang valid.