作为一名前端工程师,你一定会接触到 Express.js - 目前最常用的 Node.js Web 框架之一。Express.js 的优点在于它提供了简单的 API 和灵活性,以帮助构建 Web 应用程序。
Express.js 通过中间件机制实现了更强大的功能。中间件是一个处理 HTTP 请求和响应周期的函数,可以在 Express 中注册和使用。在此指南中,我们将讨论如何自定义中间件,以便优化 Express 应用程序并增强其功能。
什么是中间件?
中间件是一个函数,这个函数可以访问并改变请求和响应的对象,以及应用程序的请求-响应循环,接下来将作为参数传递给该函数。中间件在请求到达目标处理器之前执行,因此可以起到“拦截”请求的作用。这些函数可以以任何顺序链接在一起,以构建不同的应用程序。Express.js 还自带了很多常用的中间件,常用示例如下:
const bodyParser = require('body-parser'); // 请求体解析中间件 const morgan = require('morgan'); // 记录请求日志中间件 const cors = require('cors'); // 跨域中间件 const cookieParser = require('cookie-parser'); // 解析 cookie 中间件
自定义中间件
自定义中间件的函数签名如下:
function myMiddleware(req, res, next) { // your code here next(); }
此函数接收 req
和 res
参数,这些参数在请求-响应循环期间(即手动处理请求)保持不变。该函数还接受 next
参数,该参数用于调用下一个中间件或处理器。
例如,如果我们想要创建一个中间件来检查请求是否存在auth_token
请求头,可以使用以下代码:
function checkAuthToken(req, res, next) { if (!req.header('auth_token')) { return res.status(401).send('Missing auth token!'); } next(); }
在 Express.js
应用程序中使用自定义中间件只需要使用 app.use()
方法即可,示例如下:
const app = require('express')(); app.use(checkAuthToken); // 使用自定义中间件
演示应用
让我们创建一个应用程序,该应用程序使用自定义中间件处理 JWT(JSON Web Tokens)。
首先,让我们使用 jsonwebtoken
库创建一个基本的 JWT:
const jwt = require('jsonwebtoken'); const secretKey = 'SomeSecretKey'; const token = jwt.sign({ username: 'rohit' }, secretKey); console.log(token);
在控制台中,我们应该看到生成的 JWT。接下来,让我们将这个 JWT 作为请求头发送到我们的 Express.js 应用程序。
-- -------------------- ---- ------- ----- ------- - ------------------- ----- --- - ---------- ------------- ---- ----- -- - ----- ----- - ------------------------- -- -------- - ------ ----------------------------- ---- --------- - --- - ----- ------- - ----------------- ----------- -------- - -------- ------- - ----- ---- - ----------------------------- -------- - --- ------------ ----- ---- -- - --------------- ------------------------ --- ----- ---- - ---------------- -- ----- ---------------- -- -- ---------------------- -- ---- --------------
现在,我们可以通过 http://localhost:3000
访问应用程序,该应用程序应该返回 "Hello rohit!"。
结论
中间件是 Express.js 开发过程中非常重要的一部分。自定义中间件可以让我们优化和增强应用程序功能。在使用 Express.js 时,确保熟练掌握自定义中间件的使用,并尝试在应用程序中使用它们。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6774bc996d66e0f9aaefdb88