DataScript 将连接到虚拟服务。每个 DataScript 都在触发某个事件时执行,例如,在虚拟服务收到 HTTP 请求或 HTTP 响应时执行。每个 DataScript 对象至少包含一个事件,可能会包含更多事件。
虚拟服务可能附加有多个 DataScript。如果多个 DataScript 使用相同的事件(例如 HTTP 请求),那么分配给虚拟服务的 DataScript 的顺序将被视为 DataScript 的处理顺序。例如,如果将第一个 DataScript 设置为放弃对 /secure 目录的所有客户端请求,将第二个 DataScript 设置为将向 /secure 目录发出的请求的所有经过身份验证的客户端重定向到其他路径,则永远不会执行第二个 DataScript。
受支持的事件包括:
事件 |
描述 |
---|---|
HTTP_REQ |
此事件在已成功解析 HTTP 请求的请求行和所有标头后,收到任何潜在的 POST 正文之前触发。 |
HTTP_RESP |
此事件在已成功解析 HTTP 响应的响应状态行和所有标头后,收到响应正文之前触发。 |
RESP_FAILED |
此事件在从服务器收到有效的响应标头并将其转发到客户端之前发生任何错误/超时触发。只有 3 个 HTTP 函数可以从 RESP_FAILED 事件中调用:
|
LB_DONE |
此事件在完成服务器选择后,但在与后端服务器建立连接之前触发。此事件允许在完成服务器选择后配置各种策略。 以下是此事件支持的 DataScript API: |
每个虚拟服务对象都可以引用任意数量的 DataScript。所有 DataScript 均在配置期间进行解析。因此,在用户尝试保存新的或修改后的 DataScript 时,任何不正确的 DataScript 都将导致失败。报告配置时间错误是为了帮助调试。
当 DataScript 执行遇到故障时,该 HTTP 请求或响应的脚本执行会提前结束。将向客户端发送 HTTP 内部服务器错误,并使用已提前结束执行脚本的堆栈跟踪生成客户端日志以帮助调试。