返回介绍

Response object

发布于 2024-02-12 19:53:56 字数 9347 浏览 0 评论 0 收藏 0

响应对象包含请求响应值以及各种 HTTP 头 和 标识 当 lifecycle method 返回一个值时, 该值将包含在响应对象中,以及一些默认标识(例如 200 状态码)。提供了 h.response() 方法,为了在返回之前自定义响应,。

Response properties

response.app

访问: 读 / 写.

默认值: {} .

应用程序特定的状态. 提供存储应用程序数据的安全位置,而不会与框架发生潜在【potential】冲突. 不应该使用 plugins ,应使用 plugins[name] .

response.events

访问: 只读 并且是公共的 podium 接口.

response.events 对象支持以下对象:

  • 'peek' - 为回写客户端连接的每个数据块触发. 事件签名为 function(chunk, encoding) .

  • 'finish' - 当响应完成写入单在客户端连接结束之前触发. 事件签名为 function () .

const Crypto = require('crypto');
const Hapi = require('hapi');
const server = Hapi.server({ port: 80 });

const preResponse = function (request, h) {

  const response = request.response;
  if (response.isBoom) {
    return null;
  }

  const hash = Crypto.createHash('sha1');
  response.events.on('peek', (chunk) => {

    hash.update(chunk);
  });

  response.events.once('finish', () => {

    console.log(hash.digest('hex'));
  });

  return h.continue;
};

server.ext('onPreResponse', preResponse);

response.headers

访问: 只读。

默认值: {} .

包含响应头的对象,其中每个键是 header 字段名称,值是字符串的 header 值或字符串数组

请注意,这是一个不完整的 header 列表,要包含在响应中。 一旦响应准备好传输,将添加其他 header。

response.plugins

访问: 读 / 写.

默认值: {} .

插件特定的状态. 提供存储和传递请求级插件数据的位置。 plugins 是一个对象,其中每个键是一个插件名称,值是状态。

response.settings

访问: 只读。

包含响应处理标志的对象。

response.settings.passThrough

访问: 只读。

默认值: true .

如果为 true 并且 source 为一个 Stream , 将流对象的 statusCode and headers 属性复制到出站响应

response.settings.stringify

访问: 只读。

默认值: null (use route defaults).

source 值需要字符串化时,覆盖路由 json 选项使用。

response.settings.ttl

访问: 只读。

默认值: null (use route defaults).

如果设置, 覆盖路由的 cache 具有到期值(以毫秒为单位)。

response.settings.varyEtag

默认值: false .

如果为 true , 当 HTTP 'Vary' 头出现时,后缀将在传输时自动添加到 'ETag' 标题中(由 '-' 字符分隔)。

response.source

访问: 只读。

lifecycle method 返回的原始值.

response.statusCode

访问: 只读。

默认值: 200 .

HTTP 相应状态码。

response.variety

访问: 只读。

一个字符串,指示 source 类型具有以下可用值:

  • 'plain' - 一个简单的相应,如 字符串, 数字, null , 或简单对象.
  • 'buffer' - a Buffer .
  • 'stream' - a Stream .

response.bytes(length)

HTTP 'Content-Length' 头 (避免分块传输编码) :

  • length - header 值。 必须与实际 payload 大小匹配。

返回值: 当前相应对象.

response.charset(charset)

设置 'Content-Type' HTTP header 'charset' 属性:

  • charset -charset 属性值

返回值: 当前相应对象.

response.code(statusCode)

设置 HTTP 状态码:

  • statusCode - HTTP 状态码 (例如 200).

返回值: 当前相应对象。

response.message(httpMessage)

设置 HTTP 状态信息:

  • httpMessage - the HTTP status message (例如 'Ok' for status code 200).

返回值: 当前相应对象。

response.created(uri)

将 HTTP 状态代码设置为 Created(201)和 HTTP 'Location' 头,其中:

  • uri - 用作 'Location' 值的绝对或相对 URI。

返回值: 当前相应对象。

response.encoding(encoding)

将用于串行数据的字符串编码方案设置为 HTTP 有效负载,其中:

返回值: 当前相应对象。

response.etag(tag, options)

设置标识 entity tag :

  • tag - 没有双引号的实体标记字符串。

  • options - (可选) 设置如下:

    • weak - 如果为 true , 标识将以 'W/' 弱标识符为前缀. 为了确定 304 响应状态,弱标签将无法匹配相同的标签。 默认为 false .

    • vary - 如果为 true 并且内容编码被设置或应用于相应 (例如 'gzip' or 'deflate'), 编码名称将在传输时自动添加到标记中 (以 '-' 分割的字符串). 忽略 weaktrue . 默认为 to true .

返回值: 当前相应对象。

response.header(name, value, options)

设置 HTTP header:

  • name - header 名称.

  • value - header 值.

  • options - (可选) 对象:

    • append - 如果 true , 使用 separator 将值附加到任何现有的 header 值中. 默认为 false .

    • separator - 附加到现有值时用作分隔符的字符串。 默认为 ',' .

    • override - 如果为 false , 如果存在现有值,则不设置 header 值。 默认为 true .

    • duplicate - 如果 false , 如果已包含提供的值,则不会修改 header 值. 当 appendfalse 或 如果 name'set-cookie' 不会被添加. 默认为 true .

返回值: 当前相应对象。

response.location(uri)

设置 HTTP 'Location' header:

  • uri - 用作 'Location' 值的绝对或相对 URI。

返回值: 当前相应对象。

response.redirect(uri)

设置 HTTP 重定向响应(302)并使用其他方法修饰响应:

  • uri - 用于将客户端重定向到另一个资源的绝对或相对 URI。

返回值: 当前相应对象。

使用 response.temporary() 来装饰响应对象, response.permanent() , 和 response.rewritable() 方法 轻松更改默认重定向代码 (302).

 PermanentTemporary
Rewritable301302
Non-rewritable308307

response.replacer(method)

设置 JSON.stringify() replacer 参数:

  • method - replacer 函数或数组. 默认为 none.

返回值: 当前相应对象。

response.spaces(count)

设置 JSON.stringify() space 参数:

  • count - 缩进嵌套对象键的空格数。 默认为 没有缩进.

返回值: 当前相应对象。

response.state(name, value, [options])

设置 HTTP cookie:

  • name - cookie 名称.

  • value - cookie 值. 如果没有定义 options.encoding , 必须是字符串类型. 参阅 server.state() 以获取支持的 encoding 的值.

  • options - (可选) 可配置的. 如果状态之前已使用 server.state() 在服务器上注册, options 中的指定键将与默认服务器定义合并。

返回值: 当前相应对象。

response.suffix(suffix)

当相应通过 JSON.stringify() 处理时设置字符串前缀:

  • suffix - 字符串前缀.

返回值: 当前相应对象。

response.ttl(msec)

覆盖此响应实例的默认路由缓存过期规则:

  • msec - 生存时间值,以毫秒为单位.

返回值: 当前相应对象。

response.type(mimeType)

设置 HTTP 的 'Content-Type' header:

  • value - is the mime type.

返回值: 当前相应对象。

应该仅用于覆盖每种响应类型的内置默认值。

response.unstate(name, [options])

通过设置过期值清除 HTTP cookie:

  • name - cookie 名称.
  • options - (可选) 过期 cookie 的配置. 如果状态之前已使用 server.state() 在服务器上注册, options 中的指定键将与默认服务器定义合并。

返回值: 当前相应对象。

response.vary(header)

通过 HTTP 'Vary' 头将提供的标头添加到影响响应生成的输入列表中:

  • header - HTTP 请求头名称.

返回值: 当前相应对象。

response.takeover()

标记相应对象为一个 takeover response 。

返回值: 当前相应对象。

response.temporary(isTemporary)

设置状态码为 302307 (基于 response.rewritable() 设置) :

  • isTemporary - 如果为 false , 将状态设置为永久. 默认为 true .

返回值: 当前相应对象。

仅在调用 response.redirect() 方法后才可用.

response.permanent(isPermanent)

设置状态码为 301308 (基于 response.rewritable() 设置) :

  • isPermanent - 如果 false , 将状态设置为临时. 默认为 true .

返回值: 当前相应对象。

仅在调用 response.redirect() 方法后才可用.

response.rewritable(isRewritable)

设置状态码为 301 / 302 为可重写 (允许将请求方法从 'POST' 更改为 'GET') 或 307 / 308 为不可重写 (不允许将请求方法从 'POST' 更改为 'GET'). 精确代码基于 response.temporary() or response.permanent() 设置. 参数:

  • isRewritable - 如果 false , 设置为不可重写. 默认为 true .

返回值: 当前相应对象。

仅在调用 response.redirect() 方法后才可用.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文