on-headers 项目教程
项目介绍
on-headers
是一个 Node.js 模块,用于在 HTTP 响应即将写入头部时执行一个监听器。这个模块可以帮助开发者在响应头部被发送之前进行一些操作,例如记录时间、添加自定义头部等。
项目快速启动
安装
首先,你需要通过 npm 安装 on-headers
模块:
npm install on-headers
基本使用
以下是一个简单的示例,展示如何在响应头部被写入之前执行一个监听器:
const onHeaders = require('on-headers');
const http = require('http');
http.createServer((req, res) => {
onHeaders(res, () => {
console.log('Writing headers...');
res.setHeader('X-Custom-Header', 'Hello World');
});
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
应用案例和最佳实践
记录响应时间
一个常见的应用场景是记录服务器处理请求的时间。以下是一个示例:
const onHeaders = require('on-headers');
const http = require('http');
http.createServer((req, res) => {
const start = Date.now();
onHeaders(res, () => {
const duration = Date.now() - start;
res.setHeader('X-Response-Time', `${duration}ms`);
});
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
添加自定义头部
另一个常见的应用场景是添加自定义头部信息:
const onHeaders = require('on-headers');
const http = require('http');
http.createServer((req, res) => {
onHeaders(res, () => {
res.setHeader('X-Custom-Header', 'Custom Value');
});
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
}).listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
典型生态项目
on-headers
模块通常与其他 Node.js 模块一起使用,以实现更复杂的功能。以下是一些典型的生态项目:
Express.js
on-headers
可以与 Express.js 框架一起使用,以在 Express 应用中实现自定义头部或记录响应时间:
const express = require('express');
const onHeaders = require('on-headers');
const app = express();
app.use((req, res, next) => {
onHeaders(res, () => {
res.setHeader('X-Custom-Header', 'Custom Value');
});
next();
});
app.get('/', (req, res) => {
res.send('Hello World\n');
});
app.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
Koa.js
on-headers
也可以与 Koa.js 框架一起使用:
const Koa = require('koa');
const onHeaders = require('on-headers');
const app = new Koa();
app.use(async (ctx, next) => {
onHeaders(ctx.res, () => {
ctx.set('X-Custom-Header', 'Custom Value');
});
await next();
});
app.use(ctx => {
ctx.body = 'Hello World\n';
});
app.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考