Express Router:如何在 Node.js 中使用路由
Express 应用程序利用路由器,这些路由器本质上是一组中间件的容器。 我们可以只将这个中间件持有者放在一个特定的路径上,这允许我们将我们的逻辑保存在单独的文件中,并按照我们的条件将它们组合在一起。
高速路由器
Express Router 是一个内置类,它涉及应用程序的端点 (URI) 如何响应客户端请求。 此外,快速路由器类有助于创建路由处理程序。
您使用与 HTTP 方法对应的 Express 应用程序对象方法定义路由; 例如,app.get() 处理 GET 请求和 app.post 处理 POST 请求。 如需完整列表,请参阅 app.METHOD。
您还可以使用 app.all() 处理所有 HTTP 方法,并使用 app.use() 将中间件指定为回调函数(有关详细信息,请参阅使用中间件)。
这些路由方法指定当应用程序接收到对指定路由(端点)和 HTTP 方法的请求时调用的回调函数(有时称为“处理函数”)。
换句话说,应用程序“监听”与指定路由和方法匹配的请求,当它检测到匹配时,它调用指定的回调函数。
路由方法可以有多个回调函数作为参数。
对于多个回调函数,重要的是提供 next 作为回调函数的参数,然后在函数体内调用 next() 以将控制权移交给下一个回调。
请参阅基本路由。
// server.js const express = require('express') const app = express() // respond with "hello world" when a GET request is made to the homepage app.get('/', function (req, res) { res.send('hello world') })
现在,让我们回到我们的演示项目。
第 1 步:创建一个 express项目。
创建一个项目文件夹并进入该文件夹。
mkdir erouter && cd erouter
现在,使用以下命令初始化 package.json 文件。
npm init -y
现在,使用以下命令安装 express。
npm install express --save # or yarn add express
第二步:让我们写第一条快车路线。
现在,在根文件夹中。 创建一个名为 server.js 的文件并添加以下代码。
// server.js const express = require("express"); const app = express(); const PORT = process.env.PORT = 3000; let router = express.Router(); router.get('/',function(req,res){ res.json({'message' : 'Ping Successfull'}); }); app.use('/api',router); app.listen(PORT,function(){ console.log('Server is running at PORT:',PORT); });
首先,我们已经导入了所有需要的模块,创建了一个路由器对象,然后定义了根路由。 然后我们使用中间件说,如果任何请求带有’/api’,它将调用路由函数及其路由。 所以在我们的例子中,我们会得到一个 JSON 响应。
这是我们在 Node.js 平台上使用 express 创建 Web 应用程序时使用的基本路由示例。
快速路由器方法
Express 支持以下主要的路由方式。
- 得到
- 邮政
- 放
- 头
- 删除
- 选项
还有其他方法,但主要是我们在Web应用程序中使用了上述方法。 此外,还有一个名为 app.all() 的路由方法,它不是从任何 HTTP 方法派生的。
为所有请求方法的指定路径处的函数加载路由方法。
路线路径
路由路径用于定义可以发出请求的端点。 它就像一个后端端点。 在 Express 中,路由路径可以是字符串模式或正则表达式。
在上面的示例中,路由路径如下。
// server.js router.get('/',function(req,res){ res.json({'message' : 'Ping Successfull'}); });
这里,路由器路径是“/”。
路由参数
路由参数捕获指定到 URL 中特定位置的值。 因此,它们被称为 URL 段。
获得的值在 req.params 对象中可用,使用路径中指定的路由参数的名称作为值的键。
Route 参数在编辑、更新和删除等功能中非常重要。 因此,我们一般会在参数上传递ID,然后从请求中提取出来。 语法是这样的。
http://localhost:3000/api/user/:id
在 Express Router 中,我们可以使用以下代码访问 ID。
http://localhost:3000/api/user/1
在 req.params 中,将提供以下内容:{ “id”: “1” }
因此,我们可以使用以下代码访问 1。
req.params.id
快速路由器 POST 请求
特快专递路线的基本语法如下。
// server.js router.post('/', function(req, res){ res.send('It's a post route, grab the data and save in the Mongo'); });
在路由器 post 方法中,我们从 req 中保存数据,然后从 req 中提取该数据并将数据保存在数据库中。
就像下面的代码一样。
router.route('/store').post(function (req, res) { let model = new Model(req.body); model.save() .then(game => { res.status(200).json({'model': 'Your data is saved'}); }) .catch(err => { res.status(400).send("unable to save to database"); }); });
所以,这里我们使用了 Mongoose 模型将数据保存在 MongoDB 数据库中。 这只是一个实时示例,将向您展示如何创建发布请求并将数据保存在数据库中。
路由器级中间件
路由器级中间件的工作方式与应用级中间件相同,只是它绑定到 express.Router() 的实例。
// server.js const app = express(); const router = express.Router(); router.use(function (req, res, next) { console.log('Time:', Date.now()); next(); }); router.use('/user/:id', function (req, res, next) { console.log('Request URL:', req.originalUrl); next(); }, function (req, res, next) { console.log('Request Type:', req.method); next(); });
这就是本教程的内容。
也可以看看
节点快递图片上传
如何在 express 中使用模板引擎
如何在快递中提供静态文件
快速错误处理
特快专递请求