Response
Response 对象由生成 HTTP 请求的 `http.*` 方法使用。这些方法返回一个(或多个,对于 `http.batch()` 来说)Response 对象,其中包含 HTTP 响应内容和性能计时测量结果。
请注意,在发生重定向的情况下,Response 对象中的所有信息都将与最后一个请求(即未被重定向的请求)相关联。
名称 | 类型 | 描述 |
---|---|---|
Response.body | 字符串 | Response 消息体内容,常用于提取动态数据(参见此处示例)以及使用检查验证内容是否存在时。 关于如何在不需要消息体时丢弃它(以节省内存)或处理二进制数据消息体,请参见 Params.responseType 和 options.discardResponseBodies。 |
Response.cookies | 对象 | Response cookie。对象属性是 cookie 名称,值是 cookie 对象数组(包含 `name`、`value`、`domain`、`path`、`httpOnly`、`secure`、`maxAge` 和 `expires` 字段)。 |
Response.error | 字符串 | 尝试发送请求时如果发生非 HTTP 错误,则显示错误消息。 |
Response.error_code | 数值 | 如果发生非 HTTP 错误或 4xx/5xx HTTP 错误,则设置为描述该错误的特定错误代码。(0.24.0 版新增) |
Response.headers | 对象 | 表示服务器发送的所有 HTTP 头的键值对。请注意,头名称采用规范形式;例如,如果服务器响应“accept-encoding”,则键将是“Accept-Encoding”。按特定名称请求头时,由于头可以有多个值,将返回一个字符串数组。您可以通过其索引访问每个值 - 对于第一个值或单值头,将是 `Response.headers["my_key"][0]`。 |
Response.ocsp.produced_at | 数值 | 如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表 CA(或 CA 委托的 OCSP 响应者)签署此 OCSP 装订响应的时间 |
Response.ocsp.this_update | 数值 | 如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表已知指示状态正确的时间。 |
Response.ocsp.next_update | 数值 | 如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表 CA(或 CA 委托的 OCSP 响应者)将刷新此 OCSP 装订响应的时间。 |
Response.ocsp.revocation_reason | 字符串 | 证书吊销原因(如果证书状态是吊销),为以下常量之一:`http.OCSP_REASON_UNSPECIFIED`、`http.OCSP_REASON_KEY_COMPROMISE`、`http.OCSP_REASON_CA_COMPROMISE`、http.OCSP_REASON_AFFILIATION_CHANGED ,http.OCSP_REASON_SUPERSEDED ,http.OCSP_REASON_CESSATION_OF_OPERATION ,http.OCSP_REASON_CERTIFICATE_HOLD ,http.OCSP_REASON_REMOVE_FROM_CRL ,`http.OCSP_REASON_PRIVILEGE_WITHDRAWN` 或 http.OCSP_REASON_AA_COMPROMISE . |
Response.ocsp.revoked_at | 数值 | 如果服务器提供了 OCSP 装订响应,则表示自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的毫秒数,代表此证书被吊销的时间(如果证书状态是吊销)。 |
Response.ocsp.status | 字符串 | 证书状态,为以下常量之一:`http.OCSP_STATUS_GOOD`、`http.OCSP_STATUS_REVOKED`、`http.OCSP_STATUS_UNKNOWN` 或 `http.OCSP_STATUS_SERVER_FAILED`。 |
Response.proto | 字符串 | 用于执行传输的协议。可能的值包括“HTTP/1.0”、“HTTP/1.1”或“HTTP/2.0”。 |
Response.remote_ip | 字符串 | 处理请求的服务器的 IP 地址。 |
Response.remote_port | 数值 | 服务器端连接的端口。 |
Response.request.body | 字符串 | 请求消息体内容。 |
Response.request.cookies | 对象 | 请求 cookie。对象属性是 cookie 名称,值是 cookie 对象数组(包含 `name`、`value` 和 `replace` 字段)。 |
Response.request.headers | 对象 | 请求头。 |
Response.request.method | 字符串 | 请求 HTTP 方法。 |
Response.request.url | 字符串 | 请求 URL。 |
Response.status | 数值 | 服务器返回的 HTTP 状态码。 |
Response.status_text | 字符串 | (k6 v0.29.0 新增) 服务器返回的 HTTP 状态文本。 |
Response.timings | 对象 | HTTP 请求的性能计时信息。 |
Response.timings.blocked | 浮点数 | 包含在发起请求前阻塞的时间(毫秒)。 |
Response.timings.connecting | 浮点数 | 包含设置与主机的 TCP 连接所花费的时间(毫秒)。 |
Response.timings.tls_handshaking | 浮点数 | 包含与主机进行 TLS 握手会话所花费的时间(毫秒)。 |
Response.timings.sending | 浮点数 | 包含发送请求所花费的时间(毫秒)。 |
Response.timings.waiting | 浮点数 | 包含等待服务器响应所花费的时间(毫秒)。 |
Response.timings.receiving | 浮点数 | 包含接收响应数据所花费的时间(毫秒)。 |
Response.timings.duration | 浮点数 | 请求总时间(毫秒)。等于 `sending + waiting + receiving`,即远程服务器处理请求和响应所花费的时间,不包括初始 DNS 查找/连接时间。 |
Response.tls_cipher_suite | 字符串 | 如果建立了 TLS 会话,则为使用的密码套件。 |
Response.tls_version | 字符串 | 如果建立了 TLS 会话,则为使用的 SSL/TLS 版本。 |
Response.url | 字符串 | 最终获取的 URL(即经过所有潜在重定向后的 URL)。 |
Response.clickLink( [params] ) | 函数 | 将响应解析为 HTML,查找特定链接并执行相当于点击该链接的请求级操作。 |
Response.html() | 函数 | 返回一个支持 Selection.find(selector) 的对象。 |
Response.json( [selector] ) | 函数 | 将响应消息体数据解析为 JSON 并返回一个 JS 对象或数组。此调用会缓存反序列化的 JSON 数据,后续调用将返回缓存数据。可以指定可选的选择器来提取数据的特定部分,选择器语法参见此处。 |
Response.submitForm( [params] ) | 函数 | 将响应解析为 HTML,解析指定表单(默认为查找“form”元素),可选择覆盖字段,然后提交表单,考虑表单的 `method` 和 `action`。 |
示例
import { check } from 'k6';
import http from 'k6/http';
export default function () {
const res = http.get('https://k6.io');
for (const p in res.headers) {
if (res.headers.hasOwnProperty(p)) {
console.log(p + ' : ' + res.headers[p]);
}
}
check(res, {
'status is 200': (r) => r.status === 200,
'caption is correct': (r) => r.html('h1').text() == 'Example Domain',
});
}
一个用于发起 HTTP 请求并打印所有 HTTP 响应头的 k6 脚本