openresty 學習筆記二 獲取請求資料

2022-06-08 07:03:10 字數 2125 閱讀 1069

openresty 獲取post或者get的請求引數。這個是要用openresty 做介面必須要做的事情。

這裡分幾種型別:get,post(urlencoded),post(form-data)。可以根據需要選擇某種提交請求的方式,也可以集合封裝成乙個工具庫來使用

get的請求資料比較簡單

function _m.get(self)

local getargs = {}

getargs = ngx.req.get_uri_args()

return getargs

end

urlencoded型別的post請求資料也比較簡單

function _m.post_urlencoded(self)

local postargs = {}

postargs = ngx.req.get_post_args()

return postargs

end

form-data型別的post請求資料就比較複雜,需要進行字串分割(lua好像不帶split方法),所以首先要寫乙個split方法

function _m.split(self,s, delim)

if type(delim) ~= "string" or string.len(delim) <= 0 then

return nil

endlocal start = 1

local t = {}

while true do

local pos = string.find (s, delim, start, true) -- plain find

if not pos then

break

endtable.insert (t, string.sub (s, start, pos - 1))

start = pos + string.len (delim)

endtable.insert (t, string.sub (s, start))

return t

end

local upload = require "resty.upload"

local form, err = upload:new(4096)

function _m.post_form_data(self,form,err)

if not form then

ngx.log(ngx.err, "failed to new upload: ", err)

return {}

endform:set_timeout(1000) -- 1 sec

local paramtable =

local tempkey = ""

while true do

local typ, res, err = form:read()

if not typ then

ngx.log(ngx.err, "failed to read: ", err)

return {}

endlocal key = ""

local value = ""

if typ == "header" then

local key_res = _m:split(res[2],";")

key_res = key_res[2]

key_res = _m:split(key_res,"=")

key = (string.gsub(key_res[2],"\"",""))

paramtable[key] = ""

tempkey = key

endif typ == "body" then

value = res

if paramtable.s ~= nil then paramtable.s = nil end

paramtable[tempkey] = value

endif typ == "eof" then

break

endend

return paramtable

endargs = _m:post_form_data(form, err)

根據需要,也可以將其合併起來

Openresty學習彙總

在錘子科技發布會上,提到給openresty的捐贈的事情,出於好奇我在是網上查詢了openresty,看到了openresty的官網 看到介紹說的很強大,然後開始了解國內外哪些公司在使用,也對openresty進行了學習,和做了一些demo 發現openresty開發效率確實很高,最後找到了一些資源...

openresty 前端開發入門二

這一章主要介紹介紹怎麼獲取請求引數,並且處理之後返回資料 我們知道http請求通常分為兩種,分別是get,post,在http協議中,get引數通常會緊跟在uri後面,而post請求引數則包含在請求體中,nginx預設情況下是不會讀取post請求引數的,最好也不要試圖使改變這種行為,因為大多數情況下...

openresty 二 使用lua開發

在openresty中使用lua開發 在 usr local openresty nginx conf nginx.conf,修改檔案配置,把下面的新增到要訪問的location中 default type text html content by lua ngx.say hello,world 新...