response.xxx
部分api介绍
response.set
方法用于设置 HTTP 响应头。
- 通过这个方法,你可以在发送响应之前设置特定的 HTTP 头,以控制客户端如何处理收到的响应。
js
复制代码
const express = require('express');
const app = express();
app.get('/', (req, res) => {
// 设置响应头
res.set('Content-Type', 'text/plain');
res.set({
'Cache-Control': 'no-cache',
'Custom-Header': 'Custom-Value'
});
// 发送响应
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
- response.append 是 Express 框架中用于追加(添加)HTTP响应头的方法。
- 如果追加的是数组,那么数组中的每个元素都会被追加到相应的响应头中。
js
复制代码
const express = require('express');
const app = express();
app.get('/', (req, res) => {
// 追加响应头
res.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);
res.append('Set-Cookie', 'myCookie=myValue; Path=/;');
// 发送响应
res.send('Hello, World!');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
res.format
是 Express 框架中用于根据客户端的请求首部(Accept 头部)发送不同格式响应的方法。
- 作用: 给同一个url不同输出格式
- 该方法允许你根据客户端支持的不同 MIME 类型(例如 JSON、XML、HTML)选择性地发送不同格式的响应。
js
复制代码
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.format({
'text/plain': () => {
res.send('Hello, World!');
},
'text/html': () => {
res.send('<h1>Hello, World!</h1>');
},
'application/json': () => {
res.json({ message: 'Hello, World!' });
},
'default': () => {
res.status(406).send('Not Acceptable');
}
});
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
res.location
是 Express 框架中用于设置 HTTP 响应头中 Location 的方法。Location 头用于指定客户端重定向时的目标 URL。
js
复制代码
// 在这个例子中,res.location 方法用于设置 Location 头,
// 指定客户端在访问 /redirect 路径时应该重定向到的目标 URL。
// 这里使用状态码 302 表示临时重定向,也可以使用其他状态码,例如 301 表示永久重定向。
const express = require('express');
const app = express();
app.get('/redirect', (req, res) => {
// 设置重定向的目标 URL
res.location('https://example.com');
// 或者使用 res.redirect 方法
// res.redirect('https://example.com');
// 发送重定向响应
res.status(302).send('Redirecting to https://example.com');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
// 需要注意的是,你也可以直接使用 res.redirect 方法来完成上述的操作,
// 它实际上是对 res.location 和 res.status 的组合调用的简便方式。
// res.redirect('https://example.com');
res.send
是 Express 框架中用于发送 HTTP 响应的方法。
- 这个方法非常灵活,可以接受多种类型的参数,根据参数的类型采取不同的行为。
- res.send 方法会自动处理不同类型的参数,并设置相应的响应头。
- 例如,如果发送的是 JSON 数据,响应头的 Content-Type 会被设置为 application/json。
- res.send 还可以处理其他类型,比如数字、布尔值等,它会根据不同的参数类型采取适当的行为。
- 如果不提供参数,res.send 默认会发送一个空的响应。
- 需要注意的是,res.send 方法一旦调用,后续的响应代码不会执行,因为响应已经被发送。
- 如果需要在发送响应前执行其他逻辑,可以使用 next 函数传递控制权给下一个中间件或路由处理器。
js
复制代码
// 发送字符串
res.send('Hello, World!');
// 发送HTML
res.send('<h1>Hello, World!</h1>');
// 发送JSON:
res.send({ message: 'Hello, World!' });
// 发送Buffer
const bufferData = Buffer.from('Hello, World!');
res.send(bufferData);
// 发送状态码
res.status(404).send('Not Found');
// 发送JSON并设置状态码
res.status(200).json({ message: 'Success' });
// 链式调用
res.status(200).send('Hello, World!');
res.sendFile
是 Express 框架中用于发送文件作为响应的方法。
- 该方法用于向客户端发送本地文件,通常用于提供静态文件,例如图片、音频、视频、PDF 等。
js
复制代码
// res.sendFile 用于向客户端发送图片和文档文件。path.join 用于构建文件的绝对路径,确保文件路径是正确的。
// 这里的 express.static 中间件用于指定静态文件的目录(public 文件夹),以便 Express 能够直接访问这些文件。
// 需要注意的是,res.sendFile 会自动设置正确的 Content-Type 响应头,以便浏览器正确解释接收到的文件类型。
// 如果你的应用中有一个文件,你希望以文件形式提供给客户端,res.sendFile 是一个非常方便的方法。
const express = require('express');
const path = require('path');
const app = express();
// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));
app.get('/image', (req, res) => {
// 发送图片文件
res.sendFile(path.join(__dirname, 'public', 'image.jpg'));
});
app.get('/document', (req, res) => {
// 发送文档文件
res.sendFile(path.join(__dirname, 'public', 'document.pdf'));
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
router.xxx
相关api
- Router是一个中间件,用于更方便的组织路由,可以理解成一个小型的app
- 比如可以创建user.js
js
复制代码
const express = require("express");
let router = express.Router();
router.get('/',(req, res,next)=>{
res.send('/users')
})
router.get('/:id',(req, res,next)=>{
res.send('/users:id')
})
router.get('/:id/edit',(req, res,next)=>{
res.send('/users/:id/edit')
})
module.exports = router
js
复制代码
const user = require('./user')
app.use('/users', user)
- Express API 总结
- express.xxx-内置中间件
- app.xxx-应用设置(如模板配置、中间件、挂载路由)
- req.xxx-操作请求
- res.xxx-操作响应
- router.xxx-操作路由