前言
对于一个有梦想的 div 工程师来说,后端,也是一个梦想的方向。那对于初接触后端的人来说,使用框架,无疑会大大降低学习的成本。express、koa 都是业内非常著名的后端框架,这里就先来学习一下 Express。
正文
express.xxx 相关 api
express.json()正常情况下,通过request.body是无法直接拿到请求体的,因为请求数据是以流的形式传输的。因此在获取的时候,也要通过流的方式来获取
const express = require('express')
const app = express()
app.use('/', (request, response, next) => {
response.send('hi')
request.on('data', (chunk) => {
console.log(chunk.toString())
})
next()
})
那这样写确实是有点麻烦,这时候就需要使用 express.json() 来帮助转换成 json 对象
app.use(express.json())
app.use('/', (request, response, next) => {
response.send('hi')
console.log(request.body)
next()
})
express.static('yyy')这个 api 会先去 yyy 目录下查找对应文件,如果没有的话,执行next,去匹配其他条件 大概逻辑:
if(有文件){
sendFile('xxx')
}else{
next()
}
app 相关 API
-
app.locals设置变量,与app.set不同的是,app.locals设置的值,在多个中间件中都可以使用 -
app.set/app.get使用app.set('env', 'xxx')来设定 env 的值为 xxx
使用 app.get('env') 来获取这个设定的值
典型使用:app.set('case sensitive routing', true),设置路由匹配是否敏感,默认为 false,设置为 true 后会区分路由的大小写
request 相关 API
request.get()用于获取请求头request.param('name')获取路由和查询字符串部分request.range()限制是否支持多线程下载和下载范围
response 相关 API
response.send()/response.sendFile()响应内容 / 响应文件response.status()设置 http 状态码response.location一般与 301 重定向状态码配合使用,重新定义请求路径,(可以用 response.redirect('/xxx') 来代替)
router 示例
//app.js
const express = require('express')
const app = express()
const user = require('./routers/user')
app.use('/user', user)
app.listen(3000, () => {
console.log('监听了3000端口')
})
// routers/user.js
const express = require('express')
const router = express.Router()
router.get('/', (req, res) => {
res.send('/user')
})
router.get('/:id', (req, res) => {
res.send('/user/:id')
})
router.get('/:id/edit', (req, res) => {
res.send('/user/:id/edit ')
})
module.exports = router