当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js ClientHttp2Session.request(headers[, options])用法及代码示例


clienthttp2session.request(headers[, options])

添加于:v8.4.0
  • headers <HTTP/2 Headers Object>

  • options <Object>

    • endStream <boolean> true如果Http2Stream 可写side 最初应该是关闭的,例如在发送一个GET不应期望有效负载正文的请求。
    • exclusive <boolean>trueparent 标识父流时,创建的流成为父流的唯一直接依赖项,所有其他现有依赖项成为新创建流的依赖项。 默认: false
    • parent <number> 指定新创建的流所依赖的流的数字标识符。
    • weight <number> 指定流相对于具有相同 parent 的其他流的相对依赖性。该值是1256(含)之间的数字。
    • waitForTrailers <boolean>true 时,Http2Stream 将在最后的 DATA 帧发送后发出 'wantTrailers' 事件。
    • signal <AbortSignal> AbortSignal 可用于中止正在进行的请求。
  • 返回: <ClientHttp2Stream>

仅对于 HTTP/2 客户端 Http2Session 实例,http2session.request() 创建并返回一个 Http2Stream 实例,该实例可用于向连接的服务器发送 HTTP/2 请求。

首次创建ClientHttp2Session 时,可能尚未连接套接字。如果在此期间调用clienthttp2session.request(),实际请求将被推迟到套接字准备就绪。如果在执行实际请求之前关闭session,则会抛出ERR_HTTP2_GOAWAY_SESSION

此方法仅在 http2session.type 等于 http2.constants.NGHTTP2_SESSION_CLIENT 时可用。

const http2 = require('node:http2');
const clientSession = http2.connect('https://localhost:1234');
const {
  HTTP2_HEADER_PATH,
  HTTP2_HEADER_STATUS
} = http2.constants;

const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' });
req.on('response', (headers) => {
  console.log(headers[HTTP2_HEADER_STATUS]);
  req.on('data', (chunk) => { /* .. */ });
  req.on('end', () => { /* .. */ });
});

options.waitForTrailers 选项被设置时,'wantTrailers' 事件在排队最后一块要发送的有效载荷数据后立即发出。然后可以调用http2stream.sendTrailers() 方法将尾随标头发送到对等方。

当设置options.waitForTrailers 时,在传输最后一个DATA 帧时,Http2Stream 不会自动关闭。用户代码必须调用 http2stream.sendTrailers()http2stream.close() 来关闭 Http2Stream

options.signal 设置为AbortSignal,然后调用相应AbortController 上的abort 时,请求将发出带有AbortError 错误的'error' 事件。

:method:path pseudo-headers 没有在 headers 中指定,它们分别默认为:

  • :method = 'GET'
  • :path = /

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 ClientHttp2Session.request(headers[, options])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。