Express.js 是一个流行的 Node.js Web 框架,它提供了一个简单而强大的方式来构建 Web 应用程序。中间件是 Express.js 的一个重要概念,它允许我们在请求和响应之间添加功能,比如路由、验证和日志记录。在本文中,我们将学习如何创建和使用自定义中间件。
创建自定义中间件
在 Express.js 中,中间件是一个函数,它有三个参数:请求对象(req)、响应对象(res)和下一个中间件函数(next)。下一个中间件函数是一个回调函数,它告诉 Express.js 在执行完当前中间件后继续执行下一个中间件。
下面是一个简单的自定义中间件示例,它会记录每个请求的时间戳:
function logTimestamp(req, res, next) { console.log('Timestamp:', Date.now()); next(); }
我们可以将这个中间件添加到 Express.js 应用程序中:
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ---------------------- ------------ ----- ---- -- - --------------- --------- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
在这个示例中,我们使用 app.use
方法将 logTimestamp
中间件添加到应用程序中。这意味着每个请求都会经过这个中间件,然后继续执行下一个中间件或路由处理程序。
使用中间件处理请求
我们可以使用自定义中间件处理请求,比如验证请求头、身份验证和日志记录。下面是一个示例,它会验证请求头中是否包含特定的 API 密钥:
function validateApiKey(req, res, next) { const apiKey = req.headers['x-api-key']; if (!apiKey || apiKey !== 'my-secret-api-key') { res.status(401).send('Unauthorized'); } else { next(); } }
在这个示例中,如果请求头中不包含 x-api-key
或者值不等于 'my-secret-api-key'
,则返回 401 状态码和消息 "Unauthorized"。否则,请求将继续执行下一个中间件或路由处理程序。
我们可以将这个中间件添加到应用程序中,并将其应用于需要验证 API 密钥的路由:
app.use(validateApiKey); app.get('/api/data', (req, res) => { res.send('API data'); });
在这个示例中,我们将 validateApiKey
中间件应用于 /api/data
路由。这意味着每个请求都需要通过该中间件进行验证,然后才能访问 /api/data
路由。
结论
在本文中,我们学习了如何创建和使用自定义中间件来增强 Express.js 应用程序的功能。我们了解了中间件的基本概念以及如何使用它们来处理请求和响应。我们还通过示例代码演示了如何创建和使用自定义中间件来验证 API 密钥和记录时间戳。希望本文对您有所帮助,让您更好地理解 Express.js 中间件的工作原理,并在实际项目中应用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67443cddc22b09372b1046d9