Lua 获取 Get 与 Post 请求数据|学习笔记

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 快速学习 Lua 获取 Get 与 Post 请求数据

开发者学堂课程【大数据实战项目:反爬虫系统(Lua+Spark+Redis+Hadoop 框架搭建)第一阶段Lua 获取 Get 与 Post 请求数据】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/669/detail/11607


Lua 获取 Get 与 Post 请求数据

 

内容介绍

一. 获取 uri 参数

二.总结

 

目前为止,openresty 里面的 index 和 lua 在前面已经集成完毕,只需要在 lua 的脚本当中写数据采集的代码就可以了,那么应该如何采集数据呢?

用户在查询的时候都要通过一个 web 界面查询,web 界面走的协议是 HTTP协议。HTTP 协议有采集的数据在里面传输,是通过 HTTP 的请求采集过来的。 HTTP 的请求数据有 get 方式和 post 方式。

 

一. 获取 uri 参数

获取一个 uri 有两个方法:

ngx.req.get_uri_args、ngx.req.get_post_args,二者主要的区别是参数来源有区别

代 table 元素的 (pairs),迭代数组元素的 (ipairs )

1.首先看 get 方式:

--获取 get 请求参数

Local arg=ngx.req.get _uri_ args()

for k,v in pairs(arg) do  

ngx.say("[GET ] key:",k, " v:", v)

ngx.say("<br>")

end

 

用灰色部分就能够获取到前端用户请求的数据,请求的方式以及数据的一些参数,然后做接收,前面 local 定义局部,然后把相应的结果做 for 循环,然后输出。

刚刚配置好的文件在 test10 里:

图片1.png

前面写好的把他注释掉。

图片2.png

写完之后保存为了让它生效,虽然没有修改配置文件,但是脚本修改了,所以需要重启 nginx。

重启没有报错,那么接下来刷新一下界面,界面是空的。

原因是没有给参数,

输入就可以了:

图片3.png

以上就是通过 lua 脚本的方式实现了一个 Nginx 的 get 方式请求的数据的获取参数,然后做 for 循环的输出,然后输出 key。

2.下面来看 post 方式:

--获取 post 请求时 请求参数

ngx. req.read_body()--解析 body 参数之前一定要先读取 body

local arg=ngx.req.get_post_args()

for k,v in pairs(arg) do

ngx.say("[POST] key:",k, " v:", v)

ngx.say("<br>")

end

 

同样先来写一下代码

保存,重启 nginx

刷新界面,看一下效果:

图片4.png

我们需要在获取 post 数据前先要解析数据啊,怎么解析呢?

在这执行之前输入 ngx. req.read_body()

保存,退出。

再重启 nginx,界面是这样的:

图片5.png

方法由 get 改成 post:

图片6.png

请求主题改成 name=LISI

点击发送:

图片7.png

图片8.png


二.总结

目标:掌握 Lua 获取 http 请求参数的用法

获取 url 的请求参数

get 方式的请求参数:

ngx.reg.get_uri_args(),返回值是数组,需要遍历 post 方式的请求参数:

(1)、解析 body:ngx.reqread_body()

(2)、获取: ngx.reqget_post_args()

 

相关文章
|
6月前
lua字符串与十六进制数据转换
lua字符串与十六进制数据转换
178 2
|
6月前
|
存储 C语言 图形学
C 函数中如何保存 Lua 的数据(1)
C 函数中如何保存 Lua 的数据(1)
92 0
|
消息中间件 数据采集 域名解析
数据采集-Lua集成kafka流程跑通|学习笔记
快速学习数据采集-Lua集成kafka流程跑通
数据采集-Lua集成kafka流程跑通|学习笔记
|
22天前
|
网络协议
Lua中实现异步HTTP请求的方法
Lua中实现异步HTTP请求的方法
|
1月前
|
存储 Java C++
lua完整学习笔记
Lua学习笔记,涵盖了Lua的注释、数据结构、标识符、保留字、变量、运算符、函数、流程控制语句、循环语句、table的使用、迭代器以及模块化等基础知识点。
44 3
lua完整学习笔记
|
2月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
6月前
|
C语言 C++ 索引
C 函数中如何保存 Lua 的数据(2)
C 函数中如何保存 Lua 的数据(2)
79 1
|
消息中间件 存储 NoSQL
【实战】使用Lua脚本怎么清理redis中的数据【实战】使用Lua脚本怎么清理redis中的数据
首先我们通过hiredis 向redis 中写入了数据,这里我们主要以测试为目的,所以,Key 值设定为毫秒级时间戳。
133 0
[笔记]Lua脚本学习笔记《二》调用cpp动态库
[笔记]Lua脚本学习笔记《二》调用cpp动态库
|
SQL JSON 安全
[笔记]Lua脚本学习笔记《一》
[笔记]Lua脚本学习笔记《一》