У всех вас могла возникнуть ошибка всякий раз, когда вы пытались сделать вызовы 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!" }
Таким образом, мы можем обрабатывать необработанные маршруты в нашем приложении.