多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
所谓“路由”,就是指为不同的访问路径,指定不同的处理方法。 (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); ~~~ 现在访问时,就会显示与上一次同样的结果。 如果只向浏览器发送简单的文本信息,上面的方法已经够用;但是如果要向浏览器发送复杂的内容,还是应该使用网页模板。