express
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 是应用实例的核心对象,它提供了许多方法来设置路由、中间件、配置视图等。
const app = express();listen()
启动 Express 服务器,监听指定端口的请求
app.listen(3000, () => {
console.log('Server is running on port 3000');
});use()
作用:注册中间件,用于处理所有请求,或者处理特定路径的请求。
app.use([path], middleware);path:可选参数,表示中间件应用的路径前缀。如果不指定路径,表示对所有路由都适用该中间件。middleware:要使用的中间件函数,它接受三个参数:req,res,next。
// 注册一个全局中间件
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
app.get(path,callback)path:请求的路径。callback:请求处理函数,接收req、res和next参数。
app.get('/', (req, res) => {
res.send('Hello, World!');
});all
注册适用于所有 HTTP 方法(GET, POST, PUT, DELETE 等)的路由。
app.all(path,callback)app.all('/any', (req, res) => {
res.send('This will handle all methods for /any');
});Request
method
请求方式
params
请求路径的动态参数
app.get('/user/:id', (req, res) => {
console.log(req.params.id); // 输出 '123'
res.send('OK');
});body
当请求为 POST, PUT, PATCH 等方法时,req.body 用于获取请求体的内容。
警告
需要注册中间件:
express.json()否则req.body=undefined
- 请求体为JSON,自动转为JS对象
app.post('/user', express.json(), (req, res) => {
console.log(req.body.name); // 输出 'John'
res.send('OK');
});headers
返回一个包含所有请求头的对象,字段名是小写的。例如:
{
'host': 'localhost:3000',
'user-agent': 'Mozilla/5.0...',
'content-type': 'application/json'
}get()
req.get() 是 Express 中用于获取 HTTP 请求头的一个方法,它是对 Node.js 原生 req.headers 的封装,简化了访问请求头的过程。
req.get(field)field:指定你要获取的请求头的字段名,大小写不敏感)。
返回对应的请求头的值。如果没有该头字段,返回 undefined。
app.get('/', (req, res) => {
const referer = req.get('Referer');
console.log(referer); // 打印 Referer 请求头
res.send('OK');
});is()
检查请求的 Content-Type 是否匹配指定的类型。
app.post('/data', (req, res) => {
if (req.is('json')) {
// 如果请求头是 "Content-Type: application/json"
console.log('Request is JSON');
}
res.send('OK');
});Response
status()
设置 HTTP 响应状态码。
res.status(404).send('Not Found');作用:设置响应的状态码,如 200(成功)、404(未找到)、500(服务器错误)等。
send()
发送响应数据(可以是字符串、对象、数组、Buffer 等)。
res.send('Hello, World!');
res.send({ message: 'Hello' });设置响应体并结束响应。
send()会自动根据传入的数据类型设置Content-Type头。如果传入的是对象或数组,Express 会自动将其转换为 JSON 格式。
json()
发送 JSON 格式的响应数据。
res.json({ message: 'Hello' });作用:将数据转换为 JSON 格式并设置 Content-Type 为 application/json。
get()
获取响应头字段的值。
set()
设置响应头。
res.set('X-Custom-Header', 'value');- 作用:设置单个响应头的字段。可以传递字段名和字段值。
- 如果需要设置多个响应头,可以传递一个对象。
res.set({
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
});redirect()
重定向
