برنامه نویسی

🚨 رفع خطای 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 به حفظ سازگاری در کنترل خطا کمک می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا