Express-Request请求和Response响应篇

4,295 阅读3分钟

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

请求对象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 方法

参数参数类型是否必选作用
viewString页面文件,用于渲染的文件路径
localsObject属性定义页面的局部变量
callbackfunction回调函数,返回可能的错误和呈现的字符串,但不执行自动响应,发生错误是该方法在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')

以上就是本篇的全部内容了,非常感谢帅哥美女们能看到这里,如果这个文章写得还不错或者对你有一点点帮助,求点赞,求关注,求分享,当然有任何问题可以在评论讨论,我都会积极回答的,再次感谢😁