openresty 前端開發入門二

2021-09-20 05:59:10 字數 1882 閱讀 1063

這一章主要介紹介紹怎麼獲取請求引數,並且處理之後返回資料

我們知道http請求通常分為兩種,分別是get,post,在http協議中,get引數通常會緊跟在uri後面,而post請求引數則包含在請求體中,nginx預設情況下是不會讀取post請求引數的,最好也不要試圖使改變這種行為,因為大多數情況下,post請求都是轉到後端去處理,nginx只需要讀取請求uri部分,以及請求頭

由於這樣的設計,所以獲取請求引數的方式也有兩種

get

local args = ngx.req.get_uri_args() -- 這裡是乙個table,包含所有get請求引數

local id = ngx.var.arg_id -- 這裡獲取單個請求引數,但是如果沒有傳遞這個引數,則會報錯,推薦上面那張獲取方式

post

ngx.req.read_body() -- 先讀取請求體

local args = ngx.req.get_post_args() -- 這裡也是乙個table,包含所有post請求引數

可以通過下面這個方法獲取http請求方法

local request_method = ngx.var.request_method -- get or post
為了統一獲取請求引數的方式,隱藏具體細節,提供乙個更友好的api介面,我們可以簡單的封裝一下

lua/req.lua

local _m = {}

-- 獲取http get/post 請求引數

function _m.getargs()

local request_method = ngx.var.request_method

local args = ngx.req.get_uri_args()

-- 引數獲取

if "post" == request_method then

ngx.req.read_body()

local postargs = ngx.req.get_post_args()

if postargs then

for k, v in pairs(postargs) do

args[k] = v

endend

endreturn args

endreturn _m

這個模組就實現了引數的獲取,而且支援get,post兩種傳參方式,以及引數放在uri,body的post請求,會合併兩種方式提交的引數

接下來我們可以寫乙個簡單的lua,來引入這個模組,然後測試一下效果

")測試

輸出 hello lin!

輸出 hello guest!

ok 到這裡,我們已經能夠根據請求的引數,並且在做一下處理後返回資料了

示例** 參見demo2部分

openresty 開發入門

文章目錄 1 openresty 安裝 2 lua 測試程式 3 nginx.conf 檔案配置 4 系統啟動1 openresty 安裝 2 tar xzvf openresty 1.9.15.1.tar.gz 3 進入 openresty 1.9.15.1 4 configure prefix ...

openresty 前端開發入門五之Mysql篇

openresty 前端開發入門五之mysql篇 這章主要演示怎麼通過lua連線mysql,並根據使用者輸入的name從mysql獲取資料,並返回給使用者 操作mysql主要用到了lua resty mysql庫,可以在 github 上找得到 而且上面也有例項 由於官網給出的例子比較基本,也比較多...

openresty 前端開發入門四之Redis篇

這章主要演示怎麼通過lua連線redis,並根據使用者輸入的key從redis獲取value,並返回給使用者 操作redis主要用到了lua resty redis庫,可以在github上找得到 而且上面也有例項 由於官網給出的例子比較基本,也比較多,所以我這裡主要介紹一些怎麼封裝一下,簡化我們呼叫...