中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Openresty中http和C_json模塊怎么用

發布時間:2021-12-07 15:12:42 來源:億速云 閱讀:195 作者:小新 欄目:大數據

這篇文章主要介紹Openresty中http和C_json模塊怎么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

http客戶端

Openresty沒有提供默認的Http客戶端,需要下載第三方的http客戶端。

下載lua-resty-http到lualib目錄下,使用以下的命令下載:

cd /usr/example/lualib/resty/  
wget https://raw.githubusercontent.com/pintsized/lua-resty-http/master/lib/resty/http_headers.lua  

wget https://raw.githubusercontent.com/pintsized/lua-resty-http/master/lib/resty/http.lua

lua-resty-http模塊的地址為https://github.com/pintsized/lua-resty-http

安裝成功后,通過require(“resty.http”)引入 lua_http模塊,它有以下的api方法:

  • syntax: httpc = http.new() 創建一個 http對象

  • syntax: res, err = httpc:request_uri(uri, params)根據參數獲取內容,包括:

    • status 狀態碼

    • headers 響應頭

    • body 響應體

vim /usr/example/lua/test_http.lua,寫以下代碼:

local http = require("resty.http")  

local httpc = http.new()  

local resp, err = httpc:request_uri("http://s.taobao.com", {  
    method = "GET",  
    path = "/search?q=hello",  
    headers = {  
        ["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36"  
    }  
})  

if not resp then  
    ngx.say("request error :", err)  
    return  
end  


ngx.status = resp.status  


for k, v in pairs(resp.headers) do  
    if k ~= "Transfer-Encoding" and k ~= "Connection" then  
        ngx.header[k] = v  
    end  
end  

ngx.say(resp.body)  

httpc:close()

vim /usr/example/example.conf 加上以下的配置:

 location /lua_http {
   default_type 'text/html';
   lua_code_cache on;
   content_by_lua_file /usr/example/lua/test_http.lua;
 }

在Nginx的配置文件nginx.conf的http部分,加上以下dns解析:

vim /usr/servers/nginx/conf/nginx.conf

resolver 8.8.8.8;

瀏覽器訪問:http://116.196.177.123/lua_http,瀏覽器會顯示淘寶的搜索頁。

lua_cjson模塊

Json是一種常見的數據交換格式,常用于http通信協議和其他數據傳輸領域。在openresty默認內嵌了lua_cjson模塊,用來序列化數據。

lua_cjson模塊的地址:https://www.kyne.com.au/~mark/software/lua-cjson-manual.html

它常用的API如下:

  • local cjson = require “cjson” 獲取一個cjson對象

  • local str = cjson.encode(obj) obj轉換成string

  • local obj = cjson.decode(str) 將string轉obj

vim /usr/example/lua/test_cjson.lua,添加以下內容:

local cjson = require("cjson")  


local obj = {  
    id = 1,  
    name = "zhangsan",  
    age = nil,  
    is_male = false,  
    hobby = {"film", "music", "read"}  
}  

local str = cjson.encode(obj)  
ngx.say(str, "<br/>")  


str = '{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1,"age":null}'  
local obj = cjson.decode(str)  

ngx.say(obj.age, "<br/>")  
ngx.say(obj.age == nil, "<br/>")  
ngx.say(obj.age == cjson.null, "<br/>")  
ngx.say(obj.hobby[1], "<br/>")

vim /usr/example/example.conf添加以下內容:

 location ~ /lua_cjson {  
   default_type 'text/html';  
   lua_code_cache on;  
   content_by_lua_file /usr/example/lua/test_cjson.lua;  
 }

在瀏覽器上訪問http://116.196.177.123/lua_cjson,瀏覽器顯示以下內容:

{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1}
null
false
true
film

以上是“Openresty中http和C_json模塊怎么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德保县| 盐津县| 时尚| 霍州市| 洪泽县| 常山县| 峡江县| 神池县| 洛隆县| 松溪县| 武安市| 江油市| 丹阳市| 汉川市| 尖扎县| 浮山县| 宁陵县| 鹿邑县| 英德市| 和田县| 伽师县| 五大连池市| 嫩江县| 镇赉县| 浦县| 安化县| 临高县| 察雅县| 翁源县| 梁平县| 玉环县| 沛县| 舒兰市| 阿瓦提县| 丁青县| 奉新县| 青州市| 土默特右旗| 吴堡县| 本溪市| 浮梁县|