通知策略
RapJob 有一个强大的 JavaScript
执行引擎,它可以让你轻松的判断结果是否通知。
注意
由于 JavaScript
代码运行在虚拟机中,所以我们对虚拟机有资源限制,点击查阅 JavaScript 引擎 。
简单介绍
当通知策略是自定义的时候允许用户编写 JavaScript
代码来决定是否通知或者修改通知内容。
可以通过键入 RapJob
来实时查看对象属性
当鼠标悬浮在变量上时可以查看注释
快速入门
一个最简单的例子就如下方代码所示。
javascript
function main() {
const {request, response, job} = RapJob
// 不通知
if (response.status === 404) {
return false
}
// 使用默认模版通知
if (response.status === 201) {
return true
}
// 自定义通知内容
const notification = {
title: `[${job.jobName}] 调用成功`,
content: `协议: ${request.protocol}\n总耗时: ${response.timing.call}\n响应码: ${response.status}`,
}
return {
notification: notification
}
}
其中,RapJob
作为根对象它包含了此次请求的所有信息。
注意
只有返回值是 true
或者 {title:string,content:string}
才会通知,否则一律视为 false
。返回 true
表示使用默认模版通知,返回对象可以根据对象内容进行通知。
对象信息
点击展开查看
typescript
declare interface IRapJob {
/**
* 响应信息
*/
response: {
/**
* 状态码
*
* 正常情况下状态码和 HTTP Status 保持一致,当连接超时、SSL认证失败等异常情况,会是负数。
*/
status: number;
/**
* 响应体
*/
body: string;
/**
* 当为 true 时,body 的值为: <Output Too Large>
*/
outputTooLarge: boolean;
/**
* 时间线
*/
timing: {
/**
* 总请求时间
*/
call: number;
/**
* DNS解析时间
*/
dns: number;
/**
* 连接时间
*/
connect: number;
/**
* 握手时间
*/
secureConnect: number;
/**
* 接收响应体时间
*/
receive: number;
/**
* 接收响应头时间
*/
receiveHeader: number;
/**
* 发送请求体时间
*/
send: number;
/**
* 发送请求头时间
*/
sendHeader: number;
/**
* 等待服务器响应时间
*/
wait: number;
};
/**
* 响应头
*/
headers: Map<string, Array<string>>;
}
/**
* 请求信息
*/
request: {
/**
* HTTP 协议
*/
protocol: "http/1.0" | "http/1.1" | "h2" | "h2_prior_knowledge" | "quic";
/**
* 请求地址
*/
url: string;
/**
* 请求路径
*/
path: string;
/**
* 请求方法
*/
method: "GET" | "POST" | "PUT" | "DELETE" | "HEAD" | "CONNECT" | "OPTIONS" | "TRACE" | "PATCH";
/**
* 远程地址
*/
host: string;
/**
* 远程端口
*/
port: number;
/**
* 请求头
*/
headers: Map<string, string>;
}
/**
* 任务信息
*/
job: {
/**
* 任务ID
*/
jobId: number;
/**
* 任务名称
*/
jobName: string;
}
/**
* 环境变量。环境变量会持久化
*/
environment: {
/**
* 添加环境变量
* @param key 环境变量名 限制 32 字符长度
* @param value 环境变量值 限制 255 字符长度
*/
setItem: (key: string, value: string) => void;
/**
* 获取环境变量
* @param key 环境变量名
* @returns 环境变量值,当不存在时返回 null
*/
getItem: (key: string) => string | null;
/**
* 删除环境变量
* @param key 环境变量名
*/
removeItem: (key: string) => void;
/**
* 清空环境变量
*/
clear: () => void;
};
}
环境变量
环境变量与 window.localStorage 一致,当脚本执行完毕时会统一持久化环境变量,当然也可以通过新增/编辑任务时预设环境变量。
注意
每个任务最多创建 255
个环境变量,每个环境变量的名称不能超过 255
个字符,值不能超过 4096
个字符。如果超出将抛出 Error 异常,用户可以通过 try catch
进行捕获。
使用方式
javascript
const {environment} = RapJob
environment.setItem('Hi', 'Hello')
console.log(environment.getItem('Hi')) // output: Hello
environment.removeItem('Hi')
console.log(environment.getItem('Hi')) // output: null
更多使用技巧请看最佳实践。