ExpressJS路由


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

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

app.method(path,handler)

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

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应用程序执行附加到此路由的 回调 函数并发送 “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"

卷曲请求

一种特殊的方法, 所有的,由快递提供在使用相同功能的特殊途径来处理所有类型的HTTP方法。要使用此方法,请尝试以下操作。

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

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

路由器

定义上述路线非常繁琐。要将路由与我们的主 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);

app.use 的路由功能调用 “/things” 重视的 things 路由器与这条路线。现在无论我们的应用程序在'/things'处获得什么请求,都将由我们的things.js路由器处理。things.js中的 '/' 路由实际上是 '/things' 的子路由。访问 localhost:3000/things/,您将看到以下输出。

路由器事物

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