res.render():
● 大多数情况下,渲染内容用res.render(),将会根据views中的模板文件进行渲染。如果不想使用views文件夹,那么可以使用app.set("views","myFile")进行设置成自己想要的文件夹。
● 如果想写一个快速测试页,当然可以使用res.send()。send只能用一次,自动设置MIME类型。这个函数将根据内容,自动帮我们设置了Content-Type头部和200状态码。
● 如果想使用不同的状态码,可以:
res.status(404).send('Sorry, we cannot find that!');
● 如果想使用不同的Content-Type,可以:
res.set('Content-Type', 'text/html');
● GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串。在Express中,不需要使用url模块了。可以直接使用req.query对象。
● POST请求在express中不能直接获得,必须使用body-parser模块。使用后,将可以用req.body得到参数。但是如果表单中含有文件上传,那么还是需要使用formidable模块。
使用GET传输数据
新建一个js文件并输入以下代码:
var express = require("express");
var app = express();
app.get("/",function(req,res){
console.log(req.query);
res.send();
});
app.listen(3403);
在地址栏中输入http://localhost:3403/?id=0&&sex=man&sex=ll,控制台中得到:
{ id: '0', sex: [ 'man', 'll' ] }
req.query将参数解析返回了一个参数的对象。
使用POST传输数据:
使用POST进行传输必须借助body-parser模块,加入语句app.use(bodyParser.urlencoded({extended:false}))向express暴露一个中间件,才能得到req.body
利用ejs中的表单发出post请求。
var express = require("express");
var bodyParser = require('body-parser');
var app = express();
app.set("view engine","ejs");
app.get("/",function(req,res){
res.render("form");
});
//使用一个中间件来解析
app.use(bodyParser.urlencoded({extended:false}));
app.post("/",function(req,res){
console.log(req.body);
})
app.listen(3403);
最后在表单输入后可以得到与get同样的结果。