Skip to content

express

js
const express = require('express');


const app = express();

app.use(express.json());

app.get('/get', (req, res) => {
  res.send('GET');
});

app.post('/post', (req, res) => {
  res.send('POST');
});


app.get('/user/:id', (req, res) => {
  console.log(req.params);
  console.log(req.query);
  res.send('GET');
})

app.post('/user', (req, res) => {
  console.log(req.body);
  res.send('POST');
})


app.listen(3000, () => {
  console.log('Server is running on port 3000...');
});

App

在 Express 中,app 是应用实例的核心对象,它提供了许多方法来设置路由、中间件、配置视图等。

js
const app = express();

listen()

启动 Express 服务器,监听指定端口的请求

js
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

use()

作用:注册中间件,用于处理所有请求,或者处理特定路径的请求。

js
app.use([path], middleware);
  • path:可选参数,表示中间件应用的路径前缀。如果不指定路径,表示对所有路由都适用该中间件。

  • middleware:要使用的中间件函数,它接受三个参数:req, res, next

js
// 注册一个全局中间件
app.use((req, res, next) => {
  console.log('Request received');
  next();
});

// 注册一个路径中间件
app.use('/admin', (req, res, next) => {
  console.log('Admin route accessed');
  next();
});

get/post/delete/put

js
app.get(path,callback)
  • path:请求的路径。

  • callback:请求处理函数,接收 reqresnext 参数。

js
app.get('/', (req, res) => {
  res.send('Hello, World!');
});

all

注册适用于所有 HTTP 方法(GET, POST, PUT, DELETE 等)的路由。

js
app.all(path,callback)
js
app.all('/any', (req, res) => {
  res.send('This will handle all methods for /any');
});

Request

method

请求方式

params

请求路径的动态参数

js
app.get('/user/:id', (req, res) => {
  console.log(req.params.id);  // 输出 '123'
  res.send('OK');
});

body

当请求为 POST, PUT, PATCH 等方法时,req.body 用于获取请求体的内容。

警告

需要注册中间件:

js
express.json()

否则req.body=undefined

  • 请求体为JSON,自动转为JS对象
js
app.post('/user', express.json(), (req, res) => {
  console.log(req.body.name);  // 输出 'John'
  res.send('OK');
});

headers

返回一个包含所有请求头的对象,字段名是小写的。例如:

js
{
  'host': 'localhost:3000',
  'user-agent': 'Mozilla/5.0...',
  'content-type': 'application/json'
}

get()

req.get() 是 Express 中用于获取 HTTP 请求头的一个方法,它是对 Node.js 原生 req.headers 的封装,简化了访问请求头的过程。

js
req.get(field)

field:指定你要获取的请求头的字段名,大小写不敏感)。

返回对应的请求头的值。如果没有该头字段,返回 undefined

js
app.get('/', (req, res) => {
  const referer = req.get('Referer');
  console.log(referer); // 打印 Referer 请求头
  res.send('OK');
});

is()

检查请求的 Content-Type 是否匹配指定的类型。

js
app.post('/data', (req, res) => {
  if (req.is('json')) {
    // 如果请求头是 "Content-Type: application/json"
    console.log('Request is JSON');
  }
  res.send('OK');
});

Response

status()

设置 HTTP 响应状态码。

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

作用:设置响应的状态码,如 200(成功)、404(未找到)、500(服务器错误)等。

send()

发送响应数据(可以是字符串、对象、数组、Buffer 等)。

js
res.send('Hello, World!');
res.send({ message: 'Hello' });
  • 设置响应体并结束响应。send() 会自动根据传入的数据类型设置 Content-Type 头。

  • 如果传入的是对象或数组,Express 会自动将其转换为 JSON 格式。

json()

发送 JSON 格式的响应数据。

js
res.json({ message: 'Hello' });

作用:将数据转换为 JSON 格式并设置 Content-Typeapplication/json

get()

获取响应头字段的值。

set()

设置响应头。

js
res.set('X-Custom-Header', 'value');
  • 作用:设置单个响应头的字段。可以传递字段名和字段值。
  • 如果需要设置多个响应头,可以传递一个对象。
res.set({
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache'
});

redirect()

重定向