一、路由
路由是指应用程序的端点(URI)如何响应客户端请求.
你可以使用app与HTTP方法相对应的Express对象的方法来定义路由.
例如,app.get()处理GET请求和app.post POST 请求。
你还可以使用app.all()处理所有HTTP方法,并使用app.use()将中间件指定为回调函数.
这些路由方法指定在应用程序收到对指定路由(端点)和HTTP方法的请求时调用的回调函数(有时称为“处理函数”)。换句话说,应用程序“侦听”与指定的路由和方法匹配的请求,并且当它检测到匹配项时,它将调用指定的回调函数。
实际上,路由方法可以具有多个回调函数作为参数。对于多个回调函数,重要的是提供next回调函数的参数,然后next()在函数体内调用以将控制权移交给下一个回调。
以下代码是一个非常基本的路由示例。
二、路由方法
路由方法是从HTTP方法之一派生的,并附加到express该类的实例。
以下代码是为GET和POST方法定义的到应用根目录的路由的示例。
Express 支持与所有HTTP 请求方法相对应的方法:get,post等。有关完整列表,请参见app.METHOD。
有一种特殊的路由方法,app.all()用于为所有HTTP请求方法的路径加载中间件功能。
例如,无论是使用GET,POST,PUT,DELETE 还是http模块支持的任何其他HTTP请求方法,都会对路由/secret的请求执行以下处理程序。
三、路由路径
路由路径与请求方法结合,定义了可以进行请求的端点.
路由路径可以是字符串,字符串模式或正则表达式.
字符?,+,*,和()是他们的正则表达式的对应的子集.
连字符(-)和点(.)由基于字符串的路径按字面意义进行解释.
如果你需要在路径字符串中使用美元字符(),请将其转义([并括在和中]).
例如,"/data/$book"处用于请求的路径字符串将为"
/data/([$])book".
四、路径参数
路由参数被命名为URL段,用于捕获URL中在其位置处指定的值。捕获的值将填充到req.params对象中,并将路径中指定的 route参数的名称作为其各自的键。
要使用路由参数定义路由,只需在路由路径中指定路由参数,如下所示。
五、路由处理程序
您可以提供行为类似于中间件的多个回调函数来处理请求。唯一的例外是这些回调可能会调用next(‘route’)以绕过其余的路由回调。您可以使用此机制在路由上施加先决条件,然后在没有理由继续使用当前路由的情况下将控制权传递给后续路由。
路由处理程序可以采用函数,函数数组或二者组合的形式,如以下示例所示。
单个回调函数可以处理路由。例如:
多个回调函数可以处理一条路由(请确保指定了next对象)。例如:
回调函数数组可以处理路由。例如:
独立功能和功能数组的组合可以处理路由。例如:
六、应对方法
res下表中响应对象()上的方法可以将响应发送到客户端,并终止请求-响应周期。如果没有从路由处理程序调用这些方法,则客户端请求将被挂起。
七、app.route()
可以使用来为路由路径创建可链接的路由处理程序app.route()。
由于路径是在单个位置指定的,因此创建模块化路由非常有帮助,减少冗余和错别字也很有帮助。
这是使用定义的链式路由处理程序的示例app.route()。
八、快速路由器
使用express.Router该类创建模块化的,可安装的路由处理程序。一个Router 实例是一个完整的中间件和路由系统;因此,它通常被称为“迷你应用程序”。
以下示例将路由器创建为模块,在其中加载中间件功能,定义一些路由,并将路由器模块安装在主应用程序的路径上。