返回介绍

请求属性

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

request.app

访问: 读 / 写.

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

request.auth

访问: 只读。

认证信息:

  • artifacts - 从身份验证策略接收的对象,用于与身份验证相关的操作。

  • credentials - 在身份验证过程中收到的 credential 对象。 对象的存在并不意味着成功的身份验证。

  • error - 模式设置为 'try' 失败时认证的错误.

  • isAuthenticated - 如果请求已成功验证设置为 true , 否则为 false .

  • isAuthorized - true 是请求已成功授权对路由认证 access 配置. 如果路由未定义访问规则或请求授权失败, 设置为 false .

  • isInjected - true 是如果请求已经通过 server.inject() auth 选项被认证, 否则为 undefined .

  • mode - 路由认证的模式.

  • strategy - 所用策略的名称。

request.events

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

request.events 支持一下事件:

  • 'peek' - 为从客户端连接读取的每个有效负载数据块触发。 事件方法签名是 function(chunk, encoding) .

  • 'finish' - 请求有效负责完成读取时发出. 事件方法签名是 function () .

  • 'disconnect' - 当请求错误或意外终止时触发.

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

const onRequest = function (request, h) {

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

    hash.update(chunk);
  });

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

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

  request.events.once('disconnect', () => {

    console.error('request aborted');
  });

  return h.continue;
};

server.ext('onRequest', onRequest);

request.headers

访问: 只读。

原始请求头 (参考 request.raw.req.headers ).

request.info

访问: 只读。

请求信息:

  • acceptEncoding - 请求的编码

  • completed - 请求处理完成的时间戳 ( 0 表示还在处理中).

  • cors - 请求的 CORS 信息 (尽在 'onRequest' 扩展之后可用,因为每个路由配置了 CORS, 并且在请求生命周期中这个点上没有做出路由决策), 如下:

    • isOriginMatch - 如果果请求 'Origin' 头与匹配的 CORS 限制【restrictions】匹配则为 true 。 如果未找到 'Origin' 头或者不匹配,则设置为 false
  • host - HTTP 'Host' 头 (例如 'example.com:8080').

  • hostname - 'Host' 头部的 hostname 部分 (例如 'example.com').

  • id - 唯一请求标识符 (using the format '{now}:{connection.info.id}:{5 digits counter}').

  • received - 请求接收时间戳.

  • referrer - HTTP 'Referrer' (or 'Referer') 头.

  • remoteAddress - 远程客户端 IP 地址.

  • remotePort - 远程客户端端口.

  • responded - 请求的相应时间 ( 0 标识尚未响应或者 completed 被设置但响应失败).

请注意, request.info 对象不能被修改

request.logs

访问: 只读。

一个数组包含日志请求事件。

注意如果路由 log.collect 被设置为 false , 数组将为空。

request.method

访问: 只读。

小写的请求方法 (例如 'get' , 'post' ).

request.mime

访问: 只读。

解析后的 content-type 头. 仅在启用有效负载解析且未发生错误时可用

request.orig

访问: 只读。

在进行任何验证修改之前, 包含 params , query , payloadstate 值的对象。仅在执行输入验证时设置。

request.params

访问: 只读。

一个对象,其中每个键都是具有匹配值的路径参数名称,如 Path parameters 中所述.

request.paramsArray

访问: 只读。

一个数组,包含它们在路径中出现的顺序的所有路径 params 的值。

request.path

访问: 只读。

请求 URI 的 pathname 组件.

request.payload

访问: 只读。

请求 payload 基于路由 payload.outputpayload.parse 的设置.

request.plugins 3

123

访问: 读 / 写.

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

request.pre

访问: 只读。

一个对象,其中每个键是由 route pre-handler methods 函数指定的名称。值会被作为原始值提供给后续函数作为参数。对于包装响应对象,使用 responses

request.response

访问: 读 / 写 (see limitations below).

对象可以被修改,但不能为其分配另一个对象

设置时的响应对象。 对象可以被修改,但不能为其分配另一个对象。从 extension point 中替换另一个响应,返回一个新的相应值。当没有设置响应时,会为 null (例如,当客户端断开连接时请求过早终止)。

request.preResponses

访问: 只读。

pre 相同,但表示为 pre 方法创建的响应对象。

request.query

访问: 只读。

一个对象,其中每个键是查询参数名称,每个匹配值是参数值,如果参数重复,则为值数组。 可以通过 request.setUrl 间接【indirectly】修改.

request.raw

访问: 只读。

包含 Node HTTP 服务器对象的对象。 不建议与这些原始对象直接交互

  • req - node 请求对象.
  • res - node 相应对象.

request.route

访问: 只读。

请求路由信息, 如下:

  • method - 路由的 HTTP 请求方法.
  • path - 路由地址.
  • vhost - 如果配置.
  • realm - 与路由相关的 active realm .
  • settings - route options �对象应用的默认设置
  • fingerprint - 路由内部规范化字符串,表示规范化路径。

request.server

访问: 只读并且为公有服务器接口

服务器对象.

request.state

访问: 只读。

包含已解析的 HTTP 状态信息(cookie)的对象,其中每个键是 cookie 名称和值,是使用任何已注册的 cookie 定义处理后的匹配 cookie 内容。

request.url

访问: 只读。

解析后的请求 URI.

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

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

发布评论

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