Контроллери відсутнього роуту і непередбачуваної помилки

Зазвичай в самому низу нашого сервера перед ініціалізацією сервера вставляють функцію обробки, якщо не знайдено жодного збігу за маршрутом. Іноді ці функції виносять в окремі файли. Цей код відпрацюється, якщо запит надходить формату, який не передбачений. Зірочка означає всі інші маршрути.

index.js
/**
 * Not found request handler.
 */
app.all('*', (req, res) => {
  res.status(404).json({
    msg: 'Oops! Resource not found..',
  });
});

Error handler

Якщо на сервері трапляється непередбачувана помилка (глюк), не з вини сервісу то треба вміти опрацювати цю помилку. Для цього внизу також пишуть middleware з 4 параметрами. Це є вказівкою, що це middleware опрацювання помилки.

index.js
/**
 * Global error handler. Four arguments required!!
 */
app.use((err, req, res, next) => {
  res.status(500).json({
    msg: err.message,
  });
});

Щоб перевірити відпрацювання контроллера помилки, створимо штучну помилку в запиті пінг, який ми розглядали раніше і зробимо GET-запит з маршрутом ping.

index.js
app.get("/ping", (req, res) => {
  throw new Error("Fake error");

  res.status(200).json({
    msg: "pong!",
  });
});

Цю примусову помилку має відпрацювати вищезазначений контролер помилки.

Last updated