通用HTTP接口和公用设施
此软件包定义了 data 包含在条目中
代表 HTTP 请求或回复。 生成或消耗此类条目的插件
应该符合这个形状。 除非你正在开发调试器插件
或日志处理器,你通常不需要担心 这个包,因为它会
在需要时自动安装和使用.
用于插件开发者
该套件输出以下类型定义:
export interface HttpHeaders {
[header: string]: number | string | string[] | undefined;
}
export interface HttpRequestData {
method: string; // The uppercase HTTP request method, e.g. 'GET', 'POST' etc.
uri: string; // The request URI including query string, if any
headers?: HttpHeaders; // A map of HTTP headers to values or lists of values. Header names should be lower-case.
ip?: string; // The client IP, if it can be determined.
body?: string; // The request body as a string, if the request body was captured.
bodyLength?: number; // Request body length in bytes derived from the actual request data, NOT from the Content-Length header.
lengthMismatch?: boolean; // This should be `true` if the actual request body length didn't match the Content-Length header.
}
export interface HttpResponseData {
status: number; // HTTP response status code.
message?: string; // HTTP response status message.
headers?: HttpHeaders; // A map of HTTP headers; same format as for request headers.
body?: string; // The response body as a string, if the response body was captured.
bodyLength?: number; // Response body length in bytes derived from the actual response data, NOT from the Content-Length header.
lengthMismatch?: boolean; // This should be `true` if the actual response body length didn't match the Content-Length header.
}
export interface HttpRequestLogEntry<
TTaskContext extends TContextBase = TContextBase,
TGlobalContext extends TContextShape = TContextShape,
> extends LogEntry<TTaskContext, TGlobalContext> {
type: 'http.request';
data: HttpRequestData;
}
export interface HttpResponseLogEntry<
TTaskContext extends TContextBase = TContextBase,
TGlobalContext extends TContextShape = TContextShape,
> extends LogEntry<TTaskContext, TGlobalContext> {
type: 'http.response';
data: HttpResponseData;
}
此外,还输出了若干公用事业功能:
getHttpStatusMessage(status: number): string- 此函数将返回给定的标准 HTTP 状态消息 状态代码,或(unknown)如果状态代码没有定义信件.formatHttpHeaders(headers: HttpHeaders): string- 此函数将类似方式格式化 HTTP 头图 标题将采用实际请求或答复标题的格式。 用于格式化快捷键 对于试图显示请求或响应信息的日志处理器,无法保证信头 这样的格式将符合规格或可用于实际请求或答复.createHttpHeadersFilter(exclude?: string[]): HeaderFilter- 此函数将创建过滤回调功能,您可以 用于替换exclude带有字符串的列表**redacted**通常你会用这个 包含敏感信息的信头,例如Cookie或者说Authorization。 。 。 .createHttpCaptureChecker(option: CaptureBodyOption = false): CaptureBodyChecker- 此函数将创建回调 您可以用来检查是否根据定义的规则捕获特定的请求或响应机构 (按规定)CaptureBodyOptionA级boolean意思是,你期望它意味着:true意味着永远抓住,false意味着永远不捕捉。 如果你通过一个number,它解释为以字节表示的最大体积。 如果你通过一个string或一个string[],它将被转换成一种模式,将对照Content-Type头曰. 模式 能够包含星号( q)*)代表一个或多个字符;字符串也可以包含多个图案分离 以逗号(,)或一个或多个白空字符。 以下都是有效模式的例子:text/html, (中文(简体) ),text/*, (中文(简体) ),text/*, application/json, (中文(简体) ),['image/svg', 'text/*, application/json']上一个窗体CaptureBodyOption能取为一Record<string, boolean | number>,键的相匹配模式Content-Type标题 和数值为布尔或数字,其语义与上述相同;当不存在匹配条目时 对于特定内容类型,false假设.normalizeContentType(type?: number | string | string[]): string | undefined- 此函数使内容类型正常化 从请求或响应页头映射到字符串中,可选地将第一个后的任何后缀去除;字符键.normalizeContentLength(length?: number | string | string[]): number | undefined- 此功能使内容正常化 从请求或响应头图到数字的长度.