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 新...