所谓“路由”,就是指为不同的访问路径,指定不同的处理方法。
(1)指定根路径
在app.js之中,先指定根路径的处理方法。
~~~
app.get('/', function(req, res) {
res.send('Hello World');
});
~~~
上面代码的get方法,表示处理客户端发出的GET请求。相应的,还有app.post、app.put、app.del(delete是JavaScript保留字,所以改叫del)方法。
get方法的第一个参数是访问路径,正斜杠(/)就代表根路径;第二个参数是回调函数,它的req参数表示客户端发来的HTTP请求,res参数代表发向客户端的HTTP回应,这两个参数都是对象。在回调函数内部,使用HTTP回应的send方法,表示向浏览器发送一个字符串。然后,运行下面的命令。
~~~
node app.js
~~~
此时,在浏览器中访问[http://127.0.0.1:3000,网页就会显示“Hello](http://127.0.0.1:3000%EF%BC%8C%E7%BD%91%E9%A1%B5%E5%B0%B1%E4%BC%9A%E6%98%BE%E7%A4%BA%E2%80%9CHello/) World”。
如果需要指定HTTP头信息,回调函数就必须换一种写法,要使用setHeader方法与end方法。
~~~
app.get('/', function(req, res){
var body = 'Hello World';
res.setHeader('Content-Type', 'text/plain');
res.setHeader('Content-Length', body.length);
res.end(body);
});
~~~
(2)指定特定路径
上面是处理根目录的情况,下面再举一个例子。假定用户访问/api路径,希望返回一个JSON字符串。这时,get可以这样写。
~~~
app.get('/api', function(request, response) {
response.send({name:"张三",age:40});
});
~~~
上面代码表示,除了发送字符串,send方法还可以直接发送对象。重新启动node以后,再访问路径/api,浏览器就会显示一个JSON对象。
~~~
{
"name": "张三",
"age": 40
}
~~~
我们也可以把app.get的回调函数,封装成模块。先在routes目录下面建立一个api.js文件。
~~~
// routes/api.js
exports.index = function (req, res){
res.json(200, {name:"张三",age:40});
}
~~~
然后,在app.js中加载这个模块。
~~~
// app.js
var api = require('./routes/api');
app.get('/api', api.index);
~~~
现在访问时,就会显示与上一次同样的结果。
如果只向浏览器发送简单的文本信息,上面的方法已经够用;但是如果要向浏览器发送复杂的内容,还是应该使用网页模板。
- 1. 概述
- 1.1 搭建HTTPs服务器
- 2. 运行原理
- 2.1 底层:http模块
- 2.2 对http模块的再包装
- 2.3 什么是中间件
- 2.4 use方法
- 3. Express的方法
- 3.1 all方法和HTTP动词方法
- 3.2 set方法
- 3.3 response对象
- 3.4 requst对象
- 4. 项目开发实例
- 4.1 编写启动脚本
- 4.2 配置路由
- 4.3 静态网页模板
- 5. 动态网页模板
- 5.1 安装模板引擎
- 5.2 新建数据脚本
- 5.3 新建网页模板
- 5.4 渲染模板
- 5.5 指定静态文件目录
- 6. ExpressJS 4.0的Router用法
- 6.1 基本用法
- 6.2 router.route方法
- 6.3 router中间件
- 6.4 对路径参数的处理
- 7. 上传文件
- 8. 参考链接