- ExpressJS 教程
- ExpressJS - 首页
- ExpressJS - 概述
- ExpressJS - 环境
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL 构建
- ExpressJS - 中间件
- ExpressJS - 模板引擎
- ExpressJS - 静态文件
- ExpressJS - 表单数据
- ExpressJS - 数据库
- ExpressJS - Cookie
- ExpressJS - Session
- ExpressJS - 身份验证
- ExpressJS - RESTful API
- ExpressJS - 脚手架
- ExpressJS - 错误处理
- ExpressJS - 调试
- ExpressJS - 最佳实践
- ExpressJS - 资源
- ExpressJS 有用资源
- ExpressJS - 快速指南
- ExpressJS - 有用资源
- ExpressJS - 讨论
ExpressJS - 路由
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 应用程序将执行附加到此路由的 **回调** 函数并将 **"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 "https://127.0.0.1:3000/hello"
Express 提供了一种特殊的方法 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'); //both index.js and things.js should be in same directory app.use('/things', things); app.listen(3000);
在路由 **'/things'** 上的 app.use 函数调用将 **things** 路由器附加到此路由。现在,我们的应用程序在 '/things' 处接收到的任何请求都将由我们的 things.js 路由器处理。things.js 中的 **'/'** 路由实际上是 '/things' 的子路由。访问 localhost:3000/things/,您将看到以下输出。
路由器非常有助于分离关注点并将相关的代码部分放在一起。它们有助于构建可维护的代码。您应该将与实体相关的路由定义在单个文件中,并使用上述方法将其包含在您的 **index.js** 文件中。