在使用 Express.js 进行开发时,路由是一个非常重要的概念。路由用于定义应用程序的不同端点(URIs)及如何响应来自客户端的请求。
本文将手把手地教你如何在 Express.js 中使用路由,包括路由的基本概念、路由的类型、中间件等知识点,并提供详细的示例代码,帮助你快速入门。
路由的基本概念
在 Express.js 中,路由需要处理客户端通过 HTTP 请求所发送的各种不同类型的请求。这些请求主要分为以下四类:
- GET:用于获取资源。
- POST:用于向服务器提交数据。
- PUT:用于修改服务器上的指定资源。
- DELETE:用于删除服务器上的指定资源。
在处理请求时,我们需要使用路由来帮助我们对不同类型的请求进行分类、处理并返回响应结果。
路由的类型
在 Express.js 中,路由有三种不同的类型:
基本路由
基本路由是最基本的路由类型,它通过定义 HTTP 请求的方法(GET、POST、PUT、DELETE)以及请求的路径来实现。下面是一个定义 GET 请求的基本路由的示例代码:
const express = require('express') const app = express() app.get('/', (req, res) => { res.send('Hello World!') })
在上述代码中,app.get
函数用于定义一个基本路由,响应该路由的请求方法是 GET,请求路径是 /
。当客户端使用 GET 方法访问该路径时,服务器会返回 Hello World!
。
带参数的路由
带参数的路由是指通过定义请求的路径及路由方法中传入的参数,来响应客户端请求的路由类型。下面是一个定义带参数路由的代码示例:
app.get('/user/:id', (req, res) => { res.send(`User ID: ${req.params.id}`) })
在上述代码中,app.get
函数用于定义一个带参数路由,请求路径为 /user/:id
,其中 :id
表示参数,可以通过 req.params.id
来获取。
路由中间件
路由中间是位于客户端请求到达路由处理器之前的一段处理过程,它通常用于以下场景:
- 验证请求是否具有访问特定路由的权限。
- 在请求到达路由处理器之前执行某些任务,例如日志记录、数据处理、路由拦截等。
下面是一个定义路由中间件的代码示例:
const middleware = (req, res, next) => { console.log('this is middleware') next() } app.get('/user/:id', middleware, (req, res) => { res.send(`User ID: ${req.params.id}`) })
在上述代码中,middleware
函数被定义为路由中间件,它通过 next()
函数调用下一个路由处理器。在客户端请求 /user/:id
的路由时,如果该路由具有权限并且通过了中间件的验证,中间件会打印出一条日志。
示例代码
下面是一个完整的 Express.js 应用程序,它包含基本路由、带参数路由、路由中间件等示例代码:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- ---------- - ----- ---- ----- -- - ----------------- -- ------------ ------ - ------------ ----- ---- -- - --------------- -------- -- ----------------- ----- ---- -- - --------------- ---- -- -------------------- ----------- ----- ---- -- - -------------- --- ------------------ -- ---------------- -- -- - ------------------- -- ------- -- ----------------------- --
在上述代码中,我们定义了三个不同的路由:/
、/about
和 /user/:id
。其中 /user/:id
定义了一个带参数的路由,并使用了路由中间件。
总结
本文详细介绍了如何在 Express.js 中使用路由,并讲解了路由的基本概念、类型以及路由中间件等知识点。希望这篇文章能够帮助你快速入门 Express.js 开发,并在日后的开发工作中提高你的开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645a2b3d968c7c53b0c4db0c