У всех вас могла возникнуть ошибка всякий раз, когда вы пытались сделать вызовы API к неправильной конечной точке API.

Например, предположим, что у нас есть конечная точка API, такая как api/v1/user, которая отображает пользователя, и мы делаем запрос, например api/v1/users, и получаем ошибку, подобную этой HTML

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="utf-8">
 <title>Error</title>
</head>

<body>
 <pre>Cannot GET /api/v1/users</pre>
</body>

</html>

Итак, мы получаем html-документ из апи, который не выглядит лучше, чем разработчик.

А вот и app.all()метод для обработки всего этого.

В Express app.all() — это метод, который используется для обработки HTTP-запросов для всех методов HTTP (GET, POST, PUT, DELETE и т. д.) на определенном маршруте. Это сокращенный метод, который позволяет определить функцию-обработчик, которая будет выполняться для любого метода HTTP на указанном маршруте.

Вот основной синтаксис использования app.all():

app.all(path, handler)
  • path — это шаблон маршрута или URL-адреса, на котором должна выполняться функция обработчика.
  • handler — это функция, которая будет вызываться при запросе по указанному пути. Он принимает объекты request и response в качестве аргументов, как и другие функции обработчика маршрута в Express.

Итак, давайте теперь изменим app.all() для использования в нашем случае:

Мы укажем некоторый JSON для отправки обратно пользователю. Мы определим это в нашем файле server.js:

// ROUTES
app.use('/api/v1/user', userRouter);

app.all('*', (req, res, next) => {
  res.status(404).json({
    status: 'fail',
    message: `Can't find ${req.originalUrl} on this server!`
  });
});

Теперь, если мы попытаемся запросить неправильную конечную точку, мы не получим html-документ, вместо этого мы получим JSON.

{
    "status": "fail",
    "message": "Can't find /api/v1/users on this server!"
}

Таким образом, мы можем обрабатывать необработанные маршруты в нашем приложении.