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 支持以下主要的路由方式。

  1. 得到
  2. 邮政
  3. 删除
  4. 选项

还有其他方法,但主要是我们在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 中使用模板引擎

如何在快递中提供静态文件

快速错误处理

特快专递请求

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Krunal所有,未经许可,不得转载
你可能还喜欢