【openresty】向lua代码中传递参数
2015-03-02 22:38
260 查看
前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据。
然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数据,又会将结果返回到nginx内,从而完成整个流程。
首先,有post请求:
然后是nginx的相关配置:
在介绍FormInputNginxModule模块时,我们看到这个配置通过set_form_input方法获取了post提交的data数据,并成功的将结果返回给了前台。
现在,需要处理post上来的data数据,所以我们将data作为一个参数,传递到lua代码中,通过lua代码来处理这些数据,并且需要将结果返回给nginx。
这里,更改nginx.conf的26~29行的配置:
其中,set_by_lua方法:
语法:set_by_lua $res <lua-script-str> [$arg1 $arg2 ...]
作用:将参数列表传递到lua内,并且将lua的返回值赋值给res变量。
在这里,set_by_lua方法将data作为参数传递到了lua代码内,在lua内通过ngx.arg
获取了这个参数,经过处理后将结果返回给了nginx,然后该结果赋值给了变量re,nginx再将re返回给了前台。ngx.arg
内的n表示传递参数的顺序。
看看效果:
我们看到,前台正确的获取了nginx传递来的通过lua处理的结果数据。
如果需要将lua代码独立出来,则可以使用set_by_lua_file方法。
于是有lua文件m.lua:
再将上面的配置更改为:
看看结果:
然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数据,又会将结果返回到nginx内,从而完成整个流程。
首先,有post请求:
var json = { data: "Hello!" }; $.post( 'save', json, function(callback){ alert(callback); } );
然后是nginx的相关配置:
user root; worker_processes 2; error_log logs/error.log; pid logs/nginx.pid; events { worker_connections 1024; # multi_accept on; } http { include mime.types; access_log logs/access.log; server { listen 80; server_name localhost; location / { root /var/www/aceEditor; index index.htm index.html; } location /save { set_form_input $data data; echo $data; } } }
在介绍FormInputNginxModule模块时,我们看到这个配置通过set_form_input方法获取了post提交的data数据,并成功的将结果返回给了前台。
现在,需要处理post上来的data数据,所以我们将data作为一个参数,传递到lua代码中,通过lua代码来处理这些数据,并且需要将结果返回给nginx。
这里,更改nginx.conf的26~29行的配置:
location /save { set_form_input $data data; set_by_lua $re ' local s = "张!!!" return ngx.arg[1] .. s; ' $data; echo $re; }
其中,set_by_lua方法:
语法:set_by_lua $res <lua-script-str> [$arg1 $arg2 ...]
作用:将参数列表传递到lua内,并且将lua的返回值赋值给res变量。
在这里,set_by_lua方法将data作为参数传递到了lua代码内,在lua内通过ngx.arg
获取了这个参数,经过处理后将结果返回给了nginx,然后该结果赋值给了变量re,nginx再将re返回给了前台。ngx.arg
内的n表示传递参数的顺序。
看看效果:
我们看到,前台正确的获取了nginx传递来的通过lua处理的结果数据。
如果需要将lua代码独立出来,则可以使用set_by_lua_file方法。
于是有lua文件m.lua:
local s = "张!asdsd!!" return ngx.arg[1] .. s;
再将上面的配置更改为:
location /save { set_form_input $data data; set_by_lua_file $re /var/www/aceEditor/m.lua $data; echo $re; }
看看结果:
相关文章推荐
- 采用javascript向弹出页面中传递参数,用服务端代码取出的方法
- 毕业论文设计客户订单界面及代码(WinForm之间传递参数,公式的Sql计算方式)
- JS与PHP向函数传递可变参数的区别实例代码
- 关于Html传递参数的问题的一些参考代码
- C函数传递一个table给lua代码中使用。
- 经典的javascript代码[自适应框架和html参数传递]
- 5种ASP.NET页面间传递参数实例代码
- JS 参数传递的实际应用代码分析
- 天气预报抓取、解析(传递抓取的info参数)功能模块实现(代码)
- 用javascript取得传递参数的个数的代码
- [VB.NET]点net写client程序传递参数给mssql存储过程insert,为什么要反复执行客户端代码才能成功insert,怎么才能使客户端插入记录操作变得稳定呢?
- Javascript 调用C# 代码并传递参数的两种方法
- PHP页面间传递参数实例代码
- jquery下为Event handler传递动态参数的代码
- 【代码】结构体做函数参数,实现形参向实参传递值
- 水晶报表自定义参数传递个人示例代码
- PHP页面间传递参数实例代码
- Jquery ajax传递复杂参数给WebService的实现代码
- Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- C#网页参数传递的代码如何写?