返回介绍

Response Toolkit

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

访问: 只读。

response toolkit 是传递给每个 lifecycle method 的属性和工具类的集合。 它有点难以定义,因为它提供了用于操作响应以及其他信息的两个实用程序。 由于工具包是作为函数参数传递的, 开发人员可以随意命名. 出于本文档的目的,使用 h 表示法. 它以 RethinkDB r 方法的命名精神, h 代表 hapi.

Toolkit properties

h.abandon

访问: 只读。

response 标识. 当由生命周期方法返回时, 请求生命周期跳转到最终化步骤,而无需与节点响应流进一步交互。 是由开发人员直接通过 request.raw.res 编写和结束相应的.

h.close

访问: 只读。

response 标识。 当由生命周期方法返回时, 在调用 request.raw.res.end()) 关闭节点响应流之后,请求生命周期跳到最终步骤。

h.context

访问: 读 / 写 (如果对象被修改,将影响共享上下文).

response 标识。 通过设置的路由 bind 选项或 server.bind() ,提供访问路由和服务器上下文。

h.continue

访问: 只读。

response 标识。 当生命周期方法返回时,请求生命周期将继续,而不会更改响应。

h.realm

访问: 只读。

与匹配路由关联的 server realm 默认为 onRequest 阶段的根服务器 realm.

h.request

访问:只读和公共请求接口。

[request] 对象。 request 生命周期函数参数副本用于 toolkit decorations 访问当前的请求

h.authenticated(data)

用于 [authentication] 函数传回有效凭证,其中:

  • data - 一个对象:

    • credentials - (required) 表示已验证实体对象
    • artifacts - (可选) 认证 artifacts 对象确定认证结构

返回值: 一个内部的认证对象

h.entity(options)

设置响应的 'ETag' and 'Last-Modified' 头,并检查任何条件请求头以确定是否符合 HTTP 304 (Not Modified)。如果实体值与请求条件匹配, h.entity() 返回生命周期方法的响应对象,以返回其值,该值将设置 304 响应。 否则,它设置提供的实体头并返回 undefined . 方法参数如下:

  • options - 一个必选的配置:
    • etag - ETag 字符串. 如果 modified 没有指定,那么为必须值. 默认为 no header.
    • modified - Last-Modified 头部值. 如果 etag 没有指定,那么为必须值。 默认为 no header.
    • vary - 与 response.etag() 选项相同. 默认为 true .

返回值: - response object 如果响应没有发生了变化。 - undefined 如果响应发生了变化。

如果返回 undefined , 开发人员必须返回有效的生命周期方法值。 如果返回一个响应, 它应该被用作返回值 (但可以使用响应方法进行自定义).

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

server.route({
  method: 'GET',
  path: '/',
  config: {
    cache: { expiresIn: 5000 },
    handler: function (request, h) {

      const response = h.entity({ etag: 'abc' });
      if (response) {
        response.header('X', 'y');
        return response;
      }

      return 'ok';
    }
  }
});

h.redirect(uri)

将客户端重定向到指定的 URI。 与调用 h.response().redirect(uri) 相同.

返回一个 response object .

const handler = function (request, h) {

  return h.redirect('http://example.com');
};

h.response([value])

包含提供的值并且返回一个 response ](#response-object) 对象,允许自定义响应 (例如 设置 HTTP 状态码, 自定义 headers, 等等.), 其中:

  • value - (可选) 返回值. 默认为 null .

返回 response object .

// Detailed notation

const handler = function (request, h) {

  const response = h.response('success');
  response.type('text/plain');
  response.header('X-Custom', 'some-value');
  return response;
};

// Chained notation

const handler = function (request, h) {

  return h.response('success')
    .type('text/plain')
    .header('X-Custom', 'some-value');
};

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

设置响应 cookie, 使用 response.state() 相同的参数。

返回值: none.

const ext = function (request, h) {

  h.state('cookie-name', 'value');
  return h.continue;
};

h.unauthenticated(error, [data])

[authentication] 方法用于指示身份认证失败,并将收到的凭证传回:

  • error - (必选) 认证错误.
  • data - (可选) 一个对象:
    • credentials - (必选) 表示已验证实体的对象。
    • artifacts - (可选) 认证 artifacts 对象确定认证结构

该方法用于传递身份验证错误和凭据。例如,如果请求包括过期的凭证,它允许该方法传回用户信息 (结合 'try' 认证 mode ) 作为错误定制

如果没有传递认证,抛出的错误或将其传递给 h.unauthenticated() 方法没有区别,但它可能仍然有助于代码清晰度。

h.unstate(name, [options])

清除响应 cookie,使用 response.unstate() 相同的参数。

const ext = function (request, h) {

  h.unstate('cookie-name');
  return h.continue;
};

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

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

发布评论

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