前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Express-Request请求和Response响应

Express-Request请求和Response响应

原创
作者头像
iwhao
发布2024-07-05 08:42:44
2610
发布2024-07-05 08:42:44

请求对象Request

当请求路由的时候会计入路由的处理方法中,这个方法本质是中间件,包括三个参数,即请求对象Request,返回对象Response和执行下一步方法 next

Request 常用属性

Request.url属性 获取请求地址

代码语言:js
复制
router.get('/iwhao', function(req, res, next) {
  console.log(req.url) // 当访问路由/iwhao时控制台会打印 /iwhao
  res.render('index', { title: 'Express' });
});

Request.query 获取url?后参数

代码语言:js
复制
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中的自定义参数

代码语言:js
复制
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对象中,同样是以键值对的形式存在,方便获取处理

代码如下

代码语言:js
复制
router.post('/iwhao', function(req, res, next) {
  console.log(req.body) 
  res.render('index', { title: 'Express' });
});

Request.headers 属性获取请求头数据

代码语言:js
复制
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

代码语言:js
复制
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

代码语言:js
复制
res.send('<p>I am iron man</p>');

3.当参数为Array或Object时 Response.send()方法将将Conten-Type响应头字段设置为application/json;

代码语言:js
复制
res.send([1,2,3,4,5]);
res.send({name:'iron man'});

Response.json() 返回JSON格式的数据

除了之前使用模板返回html页面之外,返回json格式的数据也是目前最为流行的,也可以叫做 api接口,

尤其是在前后端分离的开发模式下,更为用途广泛,所有学习怎样返回json 数据也很重要

代码语言:js
复制
res.json({
    name:'iron man',
    title:'无敌'
})

Response.json() 方法只接受一个参数,可以是任何的Json格式类型,包括对象、数组字符串

Response.status() 设定http状态码

代码语言:js
复制
// res.status(500).end()
res.status(403).end()

使用res.status 后一定要写 end() 或者send和json方法当结尾,因为status 只是设置状态,并没有返回结果

Response.redirect() 重定向 跳转 指定路由

访问/iwhao 会跳转到 /ceshi

代码语言:js
复制
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状态码

代码语言:js
复制
res.redirect(301,'/ceshi')

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 请求对象Request
    • Request 常用属性
      • Request.url属性 获取请求地址
      • Request.query 获取url?后参数
      • Request.params 获取url中的自定义参数
      • Request.body 获取post请求参数
      • Request.headers 属性获取请求头数据
  • 返回对象Response
    • Response.render 方法
      • Response.send() 方法 发送http响应
        • Response.json() 返回JSON格式的数据
          • Response.status() 设定http状态码
            • Response.redirect() 重定向 跳转 指定路由
            相关产品与服务
            消息队列 TDMQ
            消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档