[TOC] #1. 支持的生命周期位置 本处指的【LUA代码运行环境】,特指以下的三个情况: ##1.1. proxy阶段的【代码转换】模块 ![](https://oss.showapi.com/doc/3105/210/17a262d0916848f98260b9d23f423982.png) ##1.2 balance阶段的【前置lua选择节点】模块 ![](https://oss.showapi.com/doc/3105/210/81b377035a02418d9e879ca8bbdf8370.png) ##1.3. proxy_response阶段的【代码转换输出】模块 ![](https://oss.showapi.com/doc/3105/210/7c37fb094cef41038ad847b8f33b1540.png) ------------ #2. 阶段的LUA代码运行环境 由于安全和性能上的要求,目前易源内嵌LUA代码支持以下函数和变量。 ##2.1. 可使用的函数 ###2.1.1 now_time now_time的实现使用的是:`ngx.localtime` ,使用时不要忘记后面加括号,也就是`now_time()`。 使用示例: ```lua function( inParams, --所有输入参数值 showapi_env, --全局环境变量 res_status, --返回状态码,通常是200 res_header_map, --返回头的map结构 res_body_str, --返回体的string res_body_js, --返回体经json转化后的对像 node_name --当次请求使用的节点名称 ) --示例用法:在返回体中加入当前时间 res_body_js.my_ret_time=now_time() end ``` ###2.1.2 ipair 用法同LUA标准的ipair方法。 ###2.1.3 pairs 用法同LUA标准的pairs方法。 ###2.1.4 table_insert 其实现是table.insert函数。 ###2.1.5 tonumber 用法同LUA标准的tonumber方法。 ###2.1.6 tostring 用法同LUA标准的tostring方法。 ###2.1.7 encode_base64 其实现为`ngx.encode_base64`。 ###2.1.8 escape_uri 其实现为`ngx.escape_uri`。 ###2.1.9 ngx_md5 其实现为`ngx.md5`。 ##2.2. 可使用的变量 ###2.2.1 showapi_env showapi_env是用户在系统中自定义的环境变量容器,使用时用以下方式: ```lua showapi_env.my_var ``` 其中my_var是在下图中定义好的变量。 ![](https://oss.showapi.com/doc/3105/210/0d21df0d4a7943c9b0b74d9fb2874220.png)