~ 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'