Skip to content

Express请求和响应

2024-08-17

request对象

方法/属性用途
req.params包含路由参数的对象
req.query包含查询字符串参数的对象
req.body包含请求体数据的对象(需要使用中间件如 express.json() 解析)
req.cookies包含请求发送的 cookies 的对象(需要 cookie-parser 中间件)
req.get(field)获取指定的请求头字段
req.is(type)检查请求的 Content-Type 是否匹配指定的类型
req.path包含请求路径
req.hostname获取主机名
req.ip获取客户端 IP 地址
req.method获取 HTTP 请求方法

response对象

方法用途
res.send(body)发送 HTTP 响应
res.json(body)发送 JSON 响应
res.status(code)设置 HTTP 状态码
res.sendStatus(code)设置状态码并发送其字符串表示作为响应体
res.render(view [, locals] [, callback])渲染视图模板
res.redirect([status,] path)重定向请求
res.set(field [, value])设置响应头
res.cookie(name, value [, options])设置 cookie
res.clearCookie(name [, options])清除 cookie
res.download(path [, filename] [, options] [, fn])传送文件作为附件
res.sendFile(path [, options] [, fn])传送文件
res.end([data] [, encoding])结束响应进程

这些是 Express 中 reqres 对象的一些常用方法和属性。每个方法都有其特定的用途,可以帮助您处理 HTTP 请求和构造 HTTP 响应。

取参数

在 Express 中,有多种方式可以传递 HTTP 参数,每种方式都有对应的方法来获取这些参数。我会为您列出常见的参数传递方式,以及如何使用 request (通常简写为 req) 对象来获取这些参数。

参数传递方式如何传递如何使用 request 获取示例
路由参数在 URL 路径中,以 :参数名 形式req.params.参数名路由: /user/:id
URL: /user/123
获取: req.params.id
查询字符串在 URL 中,以 ?key=value 形式req.query.参数名URL: /search?q=express
获取: req.query.q
请求体 (JSON)在请求体中发送 JSON 数据req.body.属性名
(需要 express.json() 中间件)
POST 请求体: {"name": "John"}
获取: req.body.name
请求体 (Form)在请求体中发送表单数据req.body.字段名
(需要 express.urlencoded() 中间件)
表单字段: <input name="username">
获取: req.body.username
Headers在 HTTP 请求头中req.get('头名称')req.headers['头名称']获取 User-Agent:
req.get('User-Agent')
Cookies在请求的 Cookie 头中req.cookies.cookie名
(需要 cookie-parser 中间件)
Cookie: token=abc123
获取: req.cookies.token

使用示例:

javascript
const express = require('express');
const app = express();

// 中间件
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 路由参数
app.get('/user/:id', (req, res) => {
    const userId = req.params.id;
    res.send(`User ID: ${userId}`);
});

// 查询字符串
app.get('/search', (req, res) => {
    const searchTerm = req.query.q;
    res.send(`Search term: ${searchTerm}`);
});

// JSON 请求体
app.post('/api/data', (req, res) => {
    const name = req.body.name;
    res.send(`Name: ${name}`);
});

// 表单数据
app.post('/submit-form', (req, res) => {
    const username = req.body.username;
    res.send(`Username: ${username}`);
});

// Headers
app.get('/headers', (req, res) => {
    const userAgent = req.get('User-Agent');
    res.send(`User Agent: ${userAgent}`);
});

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

请注意,对于请求体数据(如 JSON 或表单数据),你需要使用相应的中间件来解析请求体。对于 cookies,你可能需要额外安装和使用 cookie-parser 中间件。

这些方法覆盖了在 Express 应用中获取各种 HTTP 参数的主要方式。根据你的具体需求,你可以选择合适的方法来获取所需的参数。

花海相伴