Express.js 是一个流行的 Node.js 后端框架,它可以轻松地处理 HTTP 请求和响应。在本文中,我们将深入探讨如何使用 Express.js 处理 HTTP 请求和响应,包括路由处理、中间件应用以及错误处理等。
路由处理
在 Express.js 中,路由处理是非常重要的一部分。通过路由处理,我们可以将请求映射到特定的函数处理,从而实现对不同路由的响应。可以通过 app.get()
, app.post()
等方法来定义路由,例如:
app.get('/', (req, res) => { res.send('Hello World!'); }); app.post('/users', (req, res) => { // 处理创建新用户请求 });
上面代码中,我们定义了两个路由,分别是 /
和 /users
。app.get()
和 app.post()
分别对应 HTTP 的 GET 和 POST 请求,第一个参数是路由路径,第二个参数是路由的处理函数。
当访问 /
路由时,会返回 "Hello World!" 字符串。当访问 /users
路由时,会执行处理函数来完成创建新用户的操作。在处理函数中,可以访问 req
和 res
对象来获取请求和响应相关的信息。
除了上述示例代码中的 res.send()
方法,还有很多其他的响应方法可以使用。例如,res.json()
用于返回 JSON 格式的响应,res.sendFile()
用于返回文件等。
中间件应用
中间件是 Express.js 的另一个重要概念。通过应用中间件,我们可以在请求到达特定路由处理函数之前执行一些操作,例如日志记录、身份验证等。可以使用 app.use()
方法来应用中间件,例如:
app.use((req, res, next) => { console.log('Time:', Date.now()); next(); });
上面代码中,我们定义了一个中间件函数,它会在每个请求到达服务器时都执行。在中间件函数中,可以使用 next()
函数来将请求传递给下一个处理函数,例如路由处理函数。
经常使用的中间件还包括处理 JSON 请求体的 express.json()
和处理 Form 数据请求的 express.urlencoded()
等。例如:
app.use(express.json()); app.use(express.urlencoded({ extended: true }));
上面代码分别应用了解析 JSON 和 Form 数据的中间件,从而可以方便地在处理程序中使用这些数据。
错误处理
最后,我们来探讨一下错误处理,这对于任何应用程序都是一个关键问题。在 Express.js 中,我们可以使用 app.use()
和 next()
函数来实现错误处理。
例如,假设我们有一个处理用户认证的中间件函数,它需要验证用户是否有权访问请求资源。如果用户没有权限,则可以使用 next()
函数将请求传递给错误处理中间件。例如:
app.use('/protected', (req, res, next) => { // 验证用户是否有权限访问请求资源 if (authenticated) { next(); } else { next(new Error('Unauthorized')); } });
上面代码中,如果用户没有权限访问 /protected
路由,则会抛出一个错误。
在 Express.js 中,错误处理中间件函数有一个特殊的签名,即四个参数 (err, req, res, next)
。例如:
app.use((err, req, res, next) => { console.error(err); res.status(500).send('Internal Server Error'); });
上面代码中,我们定义了一个错误处理函数,它会在出现错误时进行处理并返回 500 错误。可以使用 res.status()
方法设置响应码,使用 res.send()
返回错误信息。
总结
通过本文,我们深入探讨了 Express.js 如何处理 HTTP 请求和响应。学习了路由处理、中间件应用以及错误处理等相关的知识。希望本文能够对你学习和使用 Express.js 有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b0c88048841e9894cf3f7e