路由是指确定应用程序如何响应客户端对特定端点的请求,即 URI(或路径)和特定的 HTTP 请求方法(GET、POST 等)。
每个路由可以有一个或多个处理函数,当路由匹配时执行。
路由定义采用以下结构:
app.METHOD(PATH, HANDLER)
- app 是 express 的一个实例。
- METHOD 是一种 HTTP 请求方法,以小写形式表示。
- PATH 是服务器上的路径。
- HANDLER 是路由匹配时执行的函数。
看一段代码:
// All regular routes use the Universal engine
server.get('*', (req, res) => {
res.render(indexHtml, {
req,
providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }],
});
});
app.get(path, callback [, callback …])
使用指定的回调函数将 HTTP GET 请求路由到指定路径。
回调函数可以是下列类型:
- 一个中间件函数
- 一系列中间件函数(以逗号分隔)。
- 一个中间件函数的数组
- 以上所有的组合。
你可以提供多个回调函数,它们的行为就像中间件,除了这些回调可以调用 next (‘route’) 来绕过剩余的路由回调。 您可以使用此机制对路由施加前提条件,然后在没有理由继续当前路由的情况下将控制权传递给后续路由。
由于 router 和 app 实现了中间件接口,因此您可以像使用任何其他中间件功能一样使用它们。
router.all(path, [callback, …] callback)
这个方法就像 router.METHOD() 方法,除了它匹配所有 HTTP 方法(动词)。
此方法对于为特定路径前缀或任意匹配映射“全局”逻辑非常有用。 例如,如果您将以下路由放在所有其他路由定义的顶部,则需要从该点开始的所有路由都需要身份验证,并自动加载用户。 请记住,这些回调不必充当 endpoints; loadUser 可以执行一个任务,然后调用 next() 继续匹配后续路由。
router.all(’*’, requireAuthentication, loadUser)