← Back

Express 快速入门


安装 Express

mkdir express-playground
cd express-playground

npm init -y
npm i express

Hello world

import express from 'express'

const app = express()

app.get('/', (req, res) => {
    res.send('Hello, world')
})

app.listen(3000, () => {
    console.log('http://127.0.0.1:3000')
})

请求参数

属性描述
app对 app 对象的引用
hostnameHost 请求头定义的主机名
ip客户端 ip
methodHTTP 方法
protocol请求协议
path请求路径
query查询字符串参数
params路径参数
body包含在请求体的数据
cookies请求携带的 cookies
signedCookies请求携带的签名的 cookies

服务端向客户端发送响应

res.send()

send 方法,如果传入的是字符串,则会自动将 Content-Type 设置为 text/html;如果传入的是数组或对象,则会将 Content-Type 设置为 application/json,并会将数组或对象解析为 JSON 格式。

send 方法调用完毕后会自动关闭连接。

另一种发送响应的方式是 res.end(),参数必须是字符串或 Buffer 类型,它不会主动设置 Content-Type

设置 HTTP 状态码

res.status(404)
// do something

res.status(404).end()

res.status(404).send('Not Found')

res.sendStatus(404)
// 相当于 res.status(404).send('Not Found')

发送 JSON 响应

res.json({ username: 'tom' })

获取 cookie(TODO)

设置 cookie

// 设置 cookie
res.cookie('sessionId', 'xxx')

// 配置选项
res.cookie('sessionId', 'xxx', {
  domain: '.flaviocopes.com',
  path: '/administrator',
  secure: true,
  expires: new Date(Date.now() + 900000),
  httpOnly: true
})

清除 cookie

res.clearCookie('sessionId')

处理 HTTP header

获取 header

// 一个对象,包含所有请求头,key 为小写字母 + 下划线的组合
res.headers

// 获取指定的请求头
res.header('Content-Type')

设置 header

res.set('Content-Type', 'text/html')

// 针对于 Content-Type 标头的快捷设置方式
res.type('html') // text/html
res.type('json') // application/json
res.type('application/json') // 同上
res.type('png')  // image/png

重定向

// 302 临时重定向
res.redirect('/xxx')

// 301 永久重定向
res.redirect(301, '/xxx')

// 重定向到 Referrer 标头值
res.redirect('back')

路由

TODO

模板引擎

TODO

中间件

TODO

静态文件服务

app.use(express.static('public'))

向客户端发送文件(文件下载)

res.download('./file.txt')

// 自定义文件名
res.download('./file.txt', '好康的.mp4')

// 文件发送后的回调
res.download('./file.txt', '好康的.mp4', err => {
    if (err) {}
    else {}
})

session 会话

TODO

表单验证

TODO

参考资料