Skip to content

通知策略

RapJob 有一个强大的 JavaScript 执行引擎,它可以让你轻松的判断结果是否通知。

注意

由于 JavaScript 代码运行在虚拟机中,所以我们对虚拟机有资源限制,点击查阅 JavaScript 引擎

简单介绍

当通知策略是自定义的时候允许用户编写 JavaScript 代码来决定是否通知或者修改通知内容。

通知策略


可以通过键入 RapJob 来实时查看对象属性

RapJob


当鼠标悬浮在变量上时可以查看注释

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

更多使用技巧请看最佳实践