express入门(二)路由

107 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情

app.get('/', function(req, res){
  res.send(req.online.length + ' users online');
});

在路由的回调函数里,接收2个参数,一个参数req代表请求(request),res代表相应(response)。当然也可以定义你喜欢的方式,不过为了代码规范和语义话,我们还是要使用res/req或者resquest/response

1 路由回调参数resquest

request下有如下属性

    1. req.params

假如我们的get路由定义的是/book/:id,请求路径为/book/1 。

console.log(req.params.id) //1
    1. req.query

假如我们的get路由定义的是/booklist?id=1

console.log(req.query.id) //1
    1. req.body 这个是用来接受post请求的参数(需要安装bodyParse中间件,中间件这个概念后边说一下)
console.log(req.body.id) //1
  • 4)req.files 取得请求里上传的文件 (需要安装bodyParse中间件)

  • 5)req.param 和param很相似,从语义也可以看出来,这个是获取单个参数,不同的是这个是函数的方式,使用如下:

req.param('id')
  • 6)req.route 返回完整的路由信息,如:
console.log(req.route);
//```
{ path: '/user/:id?',
  method: 'get',
  callbacks: [ [Function] ],
  keys: [ { name: 'id', optional: true } ],
  regexp: /^/user(?:/([^/]+?))?/?$/i,
  params: [ id: '12' ] }
  • 7)req.cookies 获取请求携带的cookie

  • 8)req.ip 获取请求的ip信息

  • 9)req.path 获取完整的path路径,也就是请求的路径。

  • 10)req.host 返回host

  • 11)req.protocol 这个常用的返回时http或者https。

2 路由回调参数response

这个就是代表返回给客户端的接口信息,常用的属性如下

  • 1)res.set 设置返回的头部信息
//设置一个头部信息,下例设置文本信息为text/plain
res.set('Content-Type', 'text/plain');
//通过设置value为对象,设置多个头部信息
res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '100',
})
  • 2)res.cookie 设置cookie给客户端
//三个参数,第一个时是key,第二个是value,第三个是option
res.cookie('token', 'xxx', { ```
expires: new Date(Date.now() + 900000), httpOnly: true});
  • 3)res.redirect 设置请求重定向路径
res.redirect('http://www.baidu.com');
  • 4) res.charset设置字符集 默认是utf,我们一般就用的也是这个,一般不用动

  • 5) res.send 发送相应 这个比较常用了,举几个例子。


res.send('some html');//返回一段文本给客户端
res.send({ status: true,msg: 'ok',data:'sth..' });// 一个基础的接口格式
res.send(404,'not fonund') //返回状态码和异常信息

  • 6)res.json 返回json给客户端,和res.send中的第二个例子很像。
res.json(null)
res.json({ user: 'tobi' })
res.json(500, { error: 'message' })
  • 7)res.render 不太常用,除非是一个前后端不分离的简单项目。为了业务逻辑更清晰,不推荐使用。