接口都添加了request和response(Express-Request请求和Response响应篇)
接口都添加了request和response(Express-Request请求和Response响应篇)router.post('/iwhao' function(req res next) { console.log(req.body) res.render('index' { title: 'Express' }); });Request.headers 属性获取请求头数据和get获取参数方式一样,Express 已经将POST 请求参数封装在了Request.body对象中,同样是以键值对的形式存在,方便获取处理 代码如下router.get('/iwhao?page=11231313' function(req res next) { // 当访问路由 /iwhao?page=11231313 时控制台会打印 11231313 console.log(req.query.page) re
请求对象Request当请求路由的时候会计入路由的处理方法中,这个方法本质是中间件,包括三个参数,即请求对象Request,返回对象Response和执行下一步方法 next
Request 常用属性
Request.url属性 获取请求地址
router.get('/iwhao' function(req res next) {
console.log(req.url) // 当访问路由/iwhao时控制台会打印 /iwhao
res.render('index' { title: 'Express' });
});
Request.query 获取url?后参数
router.get('/iwhao?page=11231313' function(req res next) {
// 当访问路由 /iwhao?page=11231313 时控制台会打印 11231313
console.log(req.query.page)
res.render('index' { title: 'Express' });
});
Request.params 获取url中的自定义参数
router.get('/iwhao/:id' function(req res next) {
console.log(req.params)
res.render('index' { title: 'Express' });
});
当访问路由/iwhao/123123 时控制台会打印 {id: '123123'}
Request.body 获取post请求参数
和get获取参数方式一样,Express 已经将POST 请求参数封装在了Request.body对象中,同样是以键值对的形式存在,方便获取处理 代码如下
router.post('/iwhao' function(req res next) {
console.log(req.body)
res.render('index' { title: 'Express' });
});
Request.headers 属性获取请求头数据
router.post('/iwhao' function(req res next) {
console.log(req.headers)
res.send(req.headers);
});
借助postman 接口请求工具 在headers中传入键为name值为chaoren的参数,然后请求后返回结果如下可以获取到请求头中的默认和自定义数据
返回对象Response上面说了请求,既然有个请求,那肯定有相应返回值,下面介绍返回对象Response
Response.render 方法
参数 |
参数类型 |
是否必选 |
作用 |
view |
String |
是 |
页面文件,用于渲染的文件路径 |
locals |
Object |
否 |
属性定义页面的局部变量 |
callback |
function |
否 |
回调函数,返回可能的错误和呈现的字符串,但不执行自动响应,发生错误是该方法在next(err) 内部调用 |
Response.send() 方法 发送http响应
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'});
Response.json() 返回JSON格式的数据
除了之前使用模板返回html页面之外,返回json格式的数据也是目前最为流行的,也可以叫做 api接口, 尤其是在前后端分离的开发模式下,更为用途广泛,所有学习怎样返回json 数据也很重要
res.json({
name:'iron man'
title:'无敌'
})
Response.json() 方法只接受一个参数,可以是任何的Json格式类型,包括对象、数组字符串
Response.status() 设定http状态码
// res.status(500).end()
res.status(403).end()
使用res.status 后一定要写 end() 或者send和json方法当结尾,因为status 只是设置状态,并没有返回结果
Response.redirect() 重定向 跳转 指定路由
访问/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')
作者:iwhao_top
链接:https://juejin.cn/post/6992351373392248839
来源:掘金