当请求路由的时候会计入路由的处理方法中,这个方法本质是中间件,包括三个参数,即请求对象Request,返回对象Response和执行下一步方法 next
router.get('/iwhao', function(req, res, next) {
console.log(req.url) // 当访问路由/iwhao时控制台会打印 /iwhao
res.render('index', { title: 'Express' });
});
router.get('/iwhao?page=11231313', function(req, res, next) {
// 当访问路由 /iwhao?page=11231313 时控制台会打印 11231313
console.log(req.query.page)
res.render('index', { title: 'Express' });
});
router.get('/iwhao/:id', function(req, res, next) {
console.log(req.params)
res.render('index', { title: 'Express' });
});
当访问路由/iwhao/123123 时控制台会打印 {id: '123123'}
和get获取参数方式一样,Express 已经将POST 请求参数封装在了Request.body对象中,同样是以键值对的形式存在,方便获取处理
代码如下
router.post('/iwhao', function(req, res, next) {
console.log(req.body)
res.render('index', { title: 'Express' });
});
router.post('/iwhao', function(req, res, next) {
console.log(req.headers)
res.send(req.headers);
});
借助postman 接口请求工具 在headers中传入键为name值为chaoren的参数,然后请求后返回结果如下可以获取到请求头中的默认和自定义数据
上面说了请求,既然有个请求,那肯定有相应返回值,下面介绍返回对象Response
参数 | 参数类型 | 是否必选 | 作用 |
---|---|---|---|
view | String | 是 | 页面文件,用于渲染的文件路径 |
locals | Object | 否 | 属性定义页面的局部变量 |
callback | function | 否 | 回调函数,返回可能的错误和呈现的字符串,但不执行自动响应,发生错误是该方法在next(err) 内部调用 |
send() 方法 只发送一个https响应至请求端,只接收一个参数,这个参数可以是任何类型
之所以可以接收任何类型的参数是因为执行这个方法的时候会自动设置响应头数据类型,即响应头里Conten-Type字段
1.当参数为Buffer对象时 Response.send() 将Conten-Type响应头字段设置为application/octet-stream
router.get(/iwhao/, function(req, res, next) {
res.send(Buffer('<p>我是213131313</p>'));
});
在Postman 中查看请求,会发现返回的响应头中Conten-Type字段值为 application/octet-stream
2.当参数为String时 Response.send()方法将将Conten-Type响应头字段设置为text/html
res.send('<p>I am iron man</p>');
3.当参数为Array或Object时 Response.send()方法将将Conten-Type响应头字段设置为application/json;
res.send([1,2,3,4,5]);
res.send({name:'iron man'});
除了之前使用模板返回html页面之外,返回json格式的数据也是目前最为流行的,也可以叫做 api接口,
尤其是在前后端分离的开发模式下,更为用途广泛,所有学习怎样返回json 数据也很重要
res.json({
name:'iron man',
title:'无敌'
})
Response.json() 方法只接受一个参数,可以是任何的Json格式类型,包括对象、数组字符串
// res.status(500).end()
res.status(403).end()
使用res.status 后一定要写 end() 或者send和json方法当结尾,因为status 只是设置状态,并没有返回结果
访问/iwhao 会跳转到 /ceshi
router.get(/iwhao/, function(req, res, next) {
res.redirect('/ceshi')
});
router.get('/ceshi', function(req, res, next) {
res.json({name:'iron man'});
});
Response.redirect() 还可以设定 http状态码
res.redirect(301,'/ceshi')
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。