~ Node.js 请求对象和响应方法
请求对象
- 路由参数 req.params
// GET /user/tj req.params.name // "tj" // GET /file/javascripts/jquery.js req.params[0] // "javascripts/jquery.js"
- 获取 url 查询参数 req.query
// GET /search?q=tobi+ferret req.query.q // "tobi ferret" // GET /shoes?order=desc&shoe[color]=blue&shoe[type]=converse req.query.order // "desc" req.query.shoe.color // "blue" req.query.shoe.type // "converse"
- post 请求,获取 body 中的参数
// POST user[name]=tobi&user[email]=tobi@learnboost.com req.body.user.name // "tobi" req.body.user.email // "tobi@learnboost.com" // POST { "name": "tobi" } req.body.name // "tobi"
- 其他
// Cookie: name=tj req.cookies.name // "tj" req.ip // "127.0.0.1" // example.com/users?sort=desc req.path // "/users" // Host: "example.com:3000" req.host // "example.com"
响应方法
res 对象的方法:向客户端返回响应、终结请求响应的循环,主要包含以下几个方法:
- res.download() 提示要下载的文件
//下载路径为'/report-12345.pdf'的文件 res.download('/report-12345.pdf'); //下载路径为'/report-12345.pdf'的文件,并将文件命名为 'report.pdf' res.download('/report-12345.pdf', 'report.pdf'); //下载路径为'/report-12345.pdf'的文件,将文件命名为 'report.pdf',并且回调 res.download('/report-12345.pdf', 'report.pdf', function(err){ if (err) { } else { } });
- res.end() 结束响应过程
//终结响应处理流程 res.end(); //设置响应码为404,并终结响应处理流程 res.status(404).end();
- res.json() 发送 JSON 响应
res.json(null) res.json({ user: 'tobi' }) res.status(500).json({ error: 'message' })
- res.jsonp() 用 JSONP 支持发送 JSON 响应
res.jsonp(null) res.jsonp({ user: 'tobi' }) res.status(500).jsonp({ error: 'message' })
- res.redirect() 重定向请求
res.redirect('/foo/bar'); res.redirect('http://example.com'); res.redirect(301, 'http://example.com'); res.redirect('../login');
- res.render() 呈现模板视图
res.render('index'); res.render('index', function(err, html) { res.send(html); }); res.render('user', { name: 'Tobi' }, function(err, html) { // ... });
- res.send() 发送各种类型的响应
res.send(new Buffer('whoop')); res.send({ some: 'json' }); res.send('<p>some html</p>'); res.status(404).send('Sorry, we cannot find that!'); res.status(500).send({ error: 'something blew up' });
- res.sendFile() 以八位字节流的形式发送文件
res.sendFile("/path/to/anime.mp4");
- res.sendStatus() 设置响应状态并将其他字符串表示形式作为主体发送
res.sendStatus(200); // 'OK' res.sendStatus(403); // 'Forbidden' res.sendStatus(404); // 'Not Found' res.sendStatus(500); // 'Internal Server Error'