路由(Routing)

优质
小牛编辑
133浏览
2023-12-01

Web框架在不同的路由上提供诸如HTML页面,脚本,图像等的资源。

以下函数用于在Express应用程序中定义路由 -

app.method(path, handler)

此METHOD可以应用于任何一个HTTP动词 - get,set,put,delete。 还存在另一种方法,该方法独立于请求类型执行。

Path是请求运行的路径。

Handler是一个回调函数,在相关路径上找到匹配的请求类型时执行。 例如,

var express = require('express');
var app = express();
app.get('/hello', function(req, res){
   res.send("Hello World!");
});
app.listen(3000);

如果我们运行我们的应用程序并转到localhost:3000/hello ,服务器会在路径"/hello"收到一个get请求,我们的Express应用程序执行附加到此路由的callback函数并发送"Hello World!" 作为回应。

你好

我们也可以在同一路线上有多种不同的方法。 例如,

var express = require('express');
var app = express();
app.get('/hello', function(req, res){
   res.send("Hello World!");
});
app.post('/hello', function(req, res){
   res.send("You just called the post method at '/hello'!\n");
});
app.listen(3000);

要测试此请求,请打开终端并使用cURL执行以下请求 -

curl -X POST "http://localhost:3000/hello"

卷曲请求

Express提供了一种特殊方法,用于使用相同的函数处理特定路径上的所有类型的http方法。 要使用此方法,请尝试以下操作。

app.all('/test', function(req, res){
   res.send("HTTP method doesn't have any effect on this route!");
});

此方法通常用于定义中间件,我们将在中间件章节中讨论。

Routers

定义上述路线非常繁琐。 要将路由与我们的主index.js文件分开,我们将使用Express.Router 。 创建一个名为things.js的新文件,并在其中键入以下内容。

var express = require('express');
var router = express.Router();
router.get('/', function(req, res){
   res.send('GET route on things.');
});
router.post('/', function(req, res){
   res.send('POST route on things.');
});
//export this router to use in our index.js
module.exports = router;

现在在index.js使用此路由器,在app.listen函数调用之前输入以下内容。

var express = require('Express');
var app = express();
var things = require('./things.js');
//both index.js and things.js should be in same directory
app.use('/things', things);
app.listen(3000);

路由'/things'上的app.use函数调用通过此路由附加路由器。 现在,无论我们的应用程序在'/ things'处获得什么请求,都将由我们的things.js路由器处理。 things.js中的'/'路由实际上是'/ things' '/'路由。 访问localhost:3000/things /,您将看到以下输出。

路由器事物

路由器非常有助于分离问题并将代码的相关部分保持在一起。 它们有助于构建可维护的代码。 您应该在单个文件中定义与实体相关的路由,并使用index.js文件中的上述方法将其包含在内。