路由是指如何定义应用的端点以及如何响应客户端的请求
路由是由一个URL、HTTP请求(GET、POST等)和若干个句柄组成,它的结构如下:app.METHOD(path,[callback...],callback), app是express对象的一个实例,METHOD是一个HTTP请求方法,path是服务器上的路径,callback是当路由匹配时要执行的函数。
路由方法
下面是一个基本的路由实例:
var express = require('express');
var app = express();
app.get('/',function(req,res){
res.send('Hello world');
})
路由句柄
可以为请求提供多个回调函数,其行为类似中间件。唯一的区别是这些回调函数有可能调用next('route')方法而略过其他路由回调函数。可以利用该机制为路由定义前提条件:
例如:
混合使用函数和函数数组处理路由
var cb0 = function(req,res,next){
console.log('cb0');
next();
}
var cb1 = function(req,res,next){
console.log('cb1');
next();
}
app.get('/example/d',[cb0,cb1],function(req,res,next){
console.log('response will be sent by the next function...');
next();
}, function(req,res){
res.send('Hello from D!');
})
响应方法
下列中响应对象(res)的方法向客户端返回响应,终结请求响应中的循环。如果在路由句柄中一个方法也不调用,来自客户端的请求会一直挂起。
- res.download() 提示下载文件
- res.end() 终结响应处理流程
- res.json() 发送一个JSON格式的响应
- res.jsonp() 发送一个支持JSONP的JSON格式的响应
- res.redirect() 重定向请求
- res.render() 渲染视图模板
- res.rend() 发送各种类型的响应
- res.sendStatus() 设置响应状态代码,并将其以字符串形式作为响应体的一部分发送。
app.route()
app.route()创建路由路径的链式路由句柄。