模块化操作

管道和模块

pipe文件是接口的数据处理文件,处理逻辑写在slices[]值里面,而我们具体写的就是一个个module

module是最基础的数据处理结构,事实上,所有的module必须写在[]里面

pipe的中文翻译是管道,那么每一个[]相对于里面的module 就是一个管道,管道里面的模块自上而下依次执行,当一项数据的值是[],那么这项数据的值是[]里面module的最终结果.

module格式如下:

{
    "module":"",          //module_id,模块名
    "input":"",           //主输入
    "params":"",          //附加参数
    "timeout":"",         //超时时间,单位毫秒
    "validate_id":"",     //验证输入,布尔值
    "debug":"",           //是否针对本环节debug日志,布尔值
    "max_retry":"",       //最多重复次数
    "slices":"",          //顺序子环节
    "mapping":""          //control.map可用
}

注意:文件内部不允许注释,如果复制请删除注释

下面是一个control.map模块

{
    "module":"control.map",
    "mapping":{
        "message":"hello galaxy"
    }
}

message的值也可以是一个map,我们只要加上一个[],并正在里面写上相应的module让他得到我们想要的值

{
    "module":"control.map",
    "mapping":{
        "message":[
            {
                "module":"control.map",
                "mapping":{
                    "code":"1001",
                    "rsp":"succ"
                }
            }
        ]
    }
}

通过${var}和${global}讲值的传递

${var}

每一个’[]’都有一个独立的值容器,当一项数据的值是[]时,系统自动生成一个新的容器,在module里面我们通过${var}来调用它,${var}的初始值是父级[]的${var}

每一个module的输出值都会重新复制给${var}(注意是覆盖),一些特定的module不会对${var}的值进行更改,比如control.assert,control.range,global.set这样的特定功能类module

还有其他的这里不一一列举.

引用${var}里的某一个值用${var.键}.需要注意的是,如果是json或者xml数据,需要用${var.键}取值需要用特定的module对数据进行解码(encoding.json.decode和encoding.xml.decode).

实例:

通过url传入两个数值id和res, url如下:

127.0.0.1:6980/api/var_test?id=1001&res=value_test

需要最终生成的数据格式:

{"data":{"rsp":"succ","msg":{"code":id值,"res":res值}}}

代码如下:

{
    "title":"var_test",
    "slices":[//生成一个${var},初始值是(php)$_GET[]
        {
            "module":"control.map",
            "mapping":{
                "data":[//生成一个${var},初始值是父级${var}
                    {
                        "module":"control.map",
                        "mapping":{
                            "code":"${var.id}",//引用了${var}例的id值
                            "res":"${var.res}" //引用了${var}例的res值
                        }
                    },//module结束,结果存入${var}
                    {
                        "module":"control.map",
                        "mapping":{
                            "msg":"${var}", //引用了${var}的值
                            "rsp":"succ"
                        }
                    }//module结束,结果存入${var}
                ]//管道结束,输出${var}(“data”得到值)
            }
        }//module结束,结果存入${var}
        {
            "input":"${var}",//引用了${var}(可缺省)
            "module":"control.return"//${var}被return
        }
    ]
}

注意:代码不支持注释,如复制请删除注释

${global}

${global}是全局变量,在任何部分我们都可以通过global.push或global.set这两个module声明一个变量并对它进行赋值(或者进栈),用${global.变量名}来引用我们的变量,清空变量通过赋空值实现

实例:

{
    "title": "global_test",
    "slices": [
        {
            "module": "global.set",
            "params": {
                "key": "test",
                "value": "hello"
            }
        },
        {
            "module":"control.map",
            "mapping":{
                "msg":"${global.test}"
            }
        },
        {
            "module": "control.return"
        }
    ]
}

沪ICP备05002918号

© 2003-2017 ShopEx,Inc.All rights reserved.