Šim*_*das 1 javascript http httprequest node.js express
我正在阅读Express.js API参考中的两个示例,但我没有得到它们.
现在假设您想忽略静态文件的日志记录请求,但是继续记录logger()之后定义的路由和中间件.你可以简单地在它上面移动static():
app.use(express.static(__dirname + '/public'));
app.use(logger());
// other middleware
这是如何导致不记录静态文件的请求?并非所有中间件都针对每个请求执行(按顺序)?
另一个具体的例子是提供来自多个目录的文件,优先于"./public"而不是其他目录:
app.use(express.static(__dirname + '/public'));
app.use(express.static(__dirname + '/files'));
app.use(express.static(__dirname + '/uploads'));
我怀疑对于像"/js/stuff.js"这样的请求,第一个中间件会检查"/public/js/stuff.js"是否存在.如果是,则此中间件处理请求,并且不会执行任何后续中间件(类似于提前返回).如果此路径不存在,则此中间件将请求传递给下一个中间件.它是否正确?
请解释这两个例子!
Express路由只是中间件的集合.每个对服务器的请求都是通过中间件链传递的.
中间件功能具有签名
function(req, res, next) { }
Run Code Online (Sandbox Code Playgroud)
app.use()正如您在上面所看到的,您可以使用中间件添加中间件.
每个中间件都有两个选择.它可以
如果中间件无法执行其中任何一项操作,您将看到您的请求超时并且无休止地"旋转".
要传递请求,中间件必须调用next().传递给中间件的第三个参数是这个next()函数.它可能有副作用,如上面的记录器中间件.
要结束请求,中间件可以使用附加到res对象的多种方法之一,例如res.send()或res.end()将响应发送回请求者.因此,express.static中间件的行为是,如果找到所请求的文件,它将结束请求链并发送文件.如果找不到请求的文件,它会将请求传递给下一个中间件.
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |