🚨 رفع خطای API در اکسپرس – خطاهای HTML بیشتر نیست!

موضوع
در حالی که من را توسعه می دهم دانشگاه پروژه ، من یک کلاس با خطای سفارشی ساختم ، عیاشی، برای استاندارد سازی پیام های خطا.
✅ خطاها به درستی در پس زمینه پرتاب شدند.
❌ اما در جلوی آن ، من به جای پاسخ JSON ، یک صفحه خطای HTML دریافت کردم.
این باعث شد غیرممکن برای رسیدگی صحیح خطاها در برنامه React من.
علت ریشه
به طور پیش فرض ، اکسپرس صفحات خطای HTML را ارسال می کند هنگامی که یک خطای نامشخص رخ می دهد.
مثال:
app.get("/error-route", (req, res) => {
throw new Error("Something went wrong");
});
پاسخ Frontend (❌ نادرست)
Error
من به راهی نیاز داشتم که همیشه پاسخ های JSON را برای خطاها برگردانم.
FIX – ایجاد یک کنترل کننده خطای API سفارشی
✅ مرحله 1: یک کلاس apierror ایجاد کنید
من یک کلاس خطای قابل استفاده مجدد برای پیام های خطای مداوم ایجاد کردم:
class ApiError extends Error {
constructor(statusCode, message) {
super(message);
this.statusCode = statusCode;
}
}
module.exports = ApiError;
اکنون ، من می توانم خطاهایی مانند این را پرتاب کنم:
const ApiError = require("./ApiError");
app.get("/error-route", (req, res) => {
throw new ApiError(400, "Invalid Request");
});
✅ مرحله 2: یک خطای خطای جهانی ایجاد کنید
برای اطمینان از ارسال پاسخ JSON برای خطاها ، من این میان افزار را اضافه کردم:
const errorHandler = (err, req, res, next) => {
const statusCode = err.statusCode || 500;
return res.status(statusCode).json({
success: false,
message: err.message || "Internal Server Error",
});
};
// Register this middleware at the end of all routes
app.use(errorHandler);
اکنون ، خطاهای API JSON را برمی گرداند
پاسخ Frontend (✅ صحیح)
{
"success": false,
"message": "Invalid Request"
}
دیگر خطاهای HTML وجود ندارد – اکنون جلوی پاسخ JSON ساختاری می شود که می تواند به درستی انجام شود! 🚀
غذای اصلی
- Express هنگام بروز خطا ، صفحات خطای HTML را به طور پیش فرض ارسال می کند.
- یک خطای خطای جهانی تضمین می کند که خطاها پاسخ های JSON را بازگردانند.
- کلاس های خطای سفارشی مانند Apierror به حفظ سازگاری در کنترل خطا کمک می کند.