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/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');
    
    //  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文件中。