جاوااسکریپت - نادیده گرفتن خطای HTTP 404 در مدارشکن اپوسوم
من در حال ساخت یک API اکسپرس هستم و یک مدار شکن را در آن با استفاده از opossum پیادهسازی کردهام.
آیا روشی وجود دارد که مدارشکن بتواند استثناهای HTTP سفارشی ایجاد شده از برنامه را نادیده بگیرد؟
من سعی کردهام گزینه errorFilter را اضافه کنم اما هنوز همان مشکل را دارم. هنوز هم آن را بهعنوان یک خطای مدار در نظر میگیرد.
const options: CircuitOptions = {
timeout: 3000, // If function takes longer than 3 seconds, trigger a failure
errorThresholdPercentage: 50, // When 50% of the requests fail, trip the circuit
resetTimeout: 30000, // After 30 seconds try again
errorFilter: err => {
// Filtering out Http404Error here.
return err.status === 404 // Not Working
}
}
پاسخ شماره ۱
یک مثال اوپاسوم وجود دارد که از ویژگی errorFilter در مخزن opossum-playground استفاده میکند
https://github.com/nodeshift-starters/opossum-playground/tree/master/error-filter
حالا، در مورد شما احتمالاً err.status کد وضعیت را برنمیگرداند بلکه یک مقدار تعریفنشده بازمیگرداند (من اینجا حدس میزنم چون کد کامل را ندارم) و مقداری که از errorFilter بازگردانده میشود صحیح نیست.
پس oposum همچنان آن را یک شکست در نظر میگیرد.
پاسخ شماره ۲
همین مسئله را تازه حل کردم.
در مورد من، من درخواست را با استفاده از axios انجام میدادم، بنابراین وضعیت پاسخ در err.response.status قرار دارد. و به همان روشی که alexalikiotis اشاره کرد، استفاده از err.status === 404 به صورت undefined === 404 ارزیابی شد.
پس این کد برای من به خوبی با استفاده از axios تماسها را از طریق شبکه انجام میدهد:
errorFilter: err => {
return err.response.status === 404
}
