• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【openresty】向lua代码中传递参数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  前面介绍FormInputNginxModule模块时,明白了openresty如何获取post提交的数据。

  然后,如果需要通过lua处理这些数据,需要把数据作为参数传递到lua中,lua获取了这些数据,又会将结果返回到nginx内,从而完成整个流程。


  首先,有post请求:

 1 var json = {
 2     data: "Hello!"
 3 };
 4 $.post(
 5     'save', 
 6     json, 
 7     function(callback){
 8         alert(callback);
 9     }
10 );

  然后是nginx的相关配置:

 1 user root;
 2 worker_processes  2;
 3 
 4 error_log  logs/error.log;
 5 pid        logs/nginx.pid;
 6 
 7 events {
 8     worker_connections  1024;
 9     # multi_accept on;
10 }
11 
12 http {
13     include       mime.types;
14 
15     access_log    logs/access.log;
16     
17     server {
18        listen 80;
19        server_name  localhost;
20        
21        location / {
22            root /var/www/aceEditor;
23            index index.htm index.html;
24        }
25            
26        location /save {
27            set_form_input $data data;
28           echo $data;
29        }
30     }
31 }

  在介绍FormInputNginxModule模块时,我们看到这个配置通过set_form_input方法获取了post提交的data数据,并成功的将结果返回给了前台。

  现在,需要处理post上来的data数据,所以我们将data作为一个参数,传递到lua代码中,通过lua代码来处理这些数据,并且需要将结果返回给nginx。

  这里,更改nginx.conf的26~29行的配置:

1 location /save {
2     set_form_input $data data;
3     set_by_lua $re '
4         local s = "张!!!"
5         return ngx.arg[1] .. s;
6     ' $data;
7     echo $re;
8 }

  其中,set_by_lua方法:

  语法:set_by_lua $res <lua-script-str> [$arg1 $arg2 ...]

  作用:将参数列表传递到lua内,并且将lua的返回值赋值给res变量。

  在这里,set_by_lua方法将data作为参数传递到了lua代码内,在lua内通过ngx.arg[n]获取了这个参数,经过处理后将结果返回给了nginx,然后该结果赋值给了变量re,nginx再将re返回给了前台。ngx.arg[n]内的n表示传递参数的顺序。

  看看效果:

  

  我们看到,前台正确的获取了nginx传递来的通过lua处理的结果数据。


  如果需要将lua代码独立出来,则可以使用set_by_lua_file方法。

  于是有lua文件m.lua:

1 local s = "张!asdsd!!"
2 return ngx.arg[1] .. s;

  再将上面的配置更改为:

1 location /save {
2     set_form_input $data data;
3     set_by_lua_file $re /var/www/aceEditor/m.lua $data;
4     echo $re;
5 }

  看看结果:

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Windows+Sublime Text3配置Lua开发环境的图文详细步骤发布时间:2022-07-22
下一篇:
AIR202的lua开发发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap