Express API主要分为五部分:
- express.xxx 内置中间件
- app.xxx 应用设置(如模板配置、中间件、挂在路由)
- req.xxx 操作请求
- res.xxx 操作响应
- router.xxx 操作路由
1.express.xxx
主要是一些内置中间件,比如express.json(),express.static()
express.json()
对json进行处理,把处理后的数据挂载到req.body
- 使用
app.use(express.json())
express.static(root, [options])
对静态文件做处理,root表示静态文件存放的目录
- 使用
app.use(express.static('public')) // public就是存放静态文件的目录
2. app.xxx
app.set('views' | 'view engine', xxx)
这个api主要用来配置信息,比如,我们想配置模板引擎,可以用app.set('view engine', 'ejs')
app.get('env') // 获取配置信息
app.get是一个多态的方法,可以接受一个参数,或两个参数。一个是用来获取配置信息,一个是用来获取get请求。
- 获取配置信息
app.get('env')
- 处理get请求
app.get('/xx', fn)
- 其他请求方法
app.post | app.put | app.delete
app.render()
用于渲染模板页面
app.use()
使用中间件
3. request.xxx
req.get()
获取请求头相关的信息,比如获取Content-Type
req.get('Content-Type')
req.params
获取命名路由的参数,比如路由是/user/:name
,那么name
属性可以通过req.params.name获取到。
// GET /user/fang
console.log(req.params.name)
// => 'fang'
req.range(size)
如果文件支持分片下载,可以通过这个方法来设置分片的范围。
range相关的知识可以参考 MDN文档
4.response.xxx
res.send([body]) / res.sendFile(path)
send可以用来发送HTTP响应。body参数可以是一个buffer,字符串,对象或者是数组。
res.send(Buffer.from('whoop'))
res.send({ some: 'json' })
res.send('<p>some html</p>')
res.status(404).send('Sorry, we cannot find that!')
res.status(500).send({ error: 'something blew up' })
sendFile就是用来发送一个文件
res.render(view) / res.download()
render是用来渲染一个页面,然后发送给客户端
// send the rendered view to the client
res.render('index')
res.headersSent
响应是否发送请求头
res.status()
可以用来设置HTTP响应状态
res.set() / res.get()
set和get可以用来设置和获取请求头相关的信息
res.format()
可以针对不同的Content-Type 返回不同的内容
res.format({
'text/plain': function () {
res.send('hey')
},
'text/html': function () {
res.send('<p>hey</p>')
},
'application/json': function () {
res.send({ message: 'hey' })
},
'default': function () {
// log the request and respond with 406
res.status(406).send('Not Acceptable')
}
})
5.router.xxx
没有需要学习的api,router就是一个阉割版的app