ExpressJS 路由
-
路由
Web框架在不同的路径上提供HTML页面,脚本,图像等资源。以下功能用于在Express应用程序中定义路由- -
app.method(路径,处理程序)
method可以应用于任何HTTP请求方法 get, set, put, delete。还存在另一种方法,该方法独立于请求类型执行。路径是运行请求的路由。处理程序是一个回调函数,当在相关路由上找到匹配的请求类型时执行。例如,var express = require('express'); var app = express(); app.get('/hello', function(req, res){ res.send("Hello World!"); }); app.listen(3000);
如果运行我们的应用程序并转到http://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!\n<form method=\"post\"><input type=\"submit\"/>POST请求</form>"); }); app.post('/hello', function(req, res){ res.send("You just called the post method at '/hello'!\n"); }); app.listen(3000);
要测试此请求,在浏览器转到http://localhost:3000/helloExpress提供了一种特殊方法all,以使用同一功能处理特定路径下的所有类型的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'); // index.js 和 things.js 应该在同一目录下 app.use('/things', things); app.listen(3000);
路由“/things”上的app.use函数调用将路由器与此路由相连。现在,无论我们的应用程序在“/things”处收到的任何请求,都将由我们的things.js路由器处理。things.js中的“/”路由实际上是“/things” 的子路由。访问localhost:3000/things/,您将看到以下输出。路由器在分离问题和将代码的相关部分保持在一起方面非常有帮助。它们有助于构建可维护的代码。您应该在单个文件中定义与实体相关的路由,并使用上述方法将其包括在index.js文件中。