一、Request

Request 对象表示 HTTP 请求。Express 在现在基础上做了一层封装添加了一些简单好用的属性与方法。

  1. req.query:获取 query 参数(问号传参)
  2. req.body:获取 body 参数(请求体传参,需要配置 express.json() 与 express.urlencoded())
  3. req.params:获取 params 参数(动态路径传参)
  4. req.cookies:获取 cookies 数据(需要配置 cookie-parser )
  5. req.get(field):获取指定的请求头数据

更多

二、Response

Response 对象表示 HTTP 响应。Express 在现在基础上做了一层封装添加了一些简单好用的属性与方法。

  1. res.send([body]):发送 HTTP 响应。body 参数可以是 Buffer 对象、String、Object、Array 类型
  2. res.status(code):设置 HTTP 状态码
  3. res.json([body]):发送 HTTP 响应。JSON 格式
  4. res.redirect([status,] path):重定向到 path 路径,status 默认为 302
  5. res.cookie(name, value [, options]):设置 cookie
  6. res.clearCookie(name [, options]):删除指定 cookie
  7. res.sendFile(path [, options] [, fn]):传送指定路径的文件
  8. res.set(field, value):设置响应头
  9. res.set({ field1: value1, field2: value }):同时设置多个响应头

更多

三、静态资源托管

使用 Express 中内置的 express.static() 中间件来处理项目中的 html、js、css、img 等静态资源文件。

1. 基本使用

  1. 选定你要作为静态资源托管的目录。这里使用的是 public 目录

image.png

  1. 调用 express.static() 中间件
  1. const express = require('express')
  2. const app = express()
  3. // 静态资源托管
  4. app.use(express.static('./public/'))
  5. app.listen(3000, () => {
  6. console.log('服务启动成功')
  7. })
  1. 访问
    1. style.css http://localhost:3000/style.css
    2. index.js http://localhost:3000/index.js
    3. h1-01.jpg http://localhost:3000/hi-01.jpg

2. 设置前缀

基本使用中的第2步,如果修改如下:

  1. const express = require('express')
  2. const app = express()
  3. // 静态资源托管
  4. app.use('/static', express.static('./public/'))
  5. app.listen(3000, () => {
  6. console.log('服务启动成功')
  7. })

这时访问时需要在路径前加上 /static 路径

四、中间件 middleware

Express 是一个路由和中间件Web框架,其自身的功能很少。Express 应用程序本质上是一系列中间件函数调用。

1. 是什么

Express 的中间件,其实就是一个接收 reqresnext 三个参数的一个函数。这个函数可以在请求-响应周期中去处理一些事情。

2. 能干什么

  1. 执行任何代码
  2. 更改请求和响应对象
  3. 结束请求-响应周期
  4. 调用堆栈中的下一个中间件

3. 如何使用

  1. 全局使用 ```javascript const app = express()

app.use((req, res, next) => { console.log(‘Time:’, Date.now()) next() })

  1. 2. 针对某个路径使用
  2. ```javascript
  3. app.use('/user/:id', (req, res, next) => {
  4. console.log('Request Type:', req.method)
  5. next()
  6. })

4. 实现一个 myLogger 中间件

5. 实现一个 requestTime 中间件

6. 实现一个 sleep 中间件,并可配置