千家信息网

Openresty中http和C_json模块怎么用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要介绍Openresty中http和C_json模块怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!http客户端Openresty没有提供默认的Http客户端,
千家信息网最后更新 2026年11月04日Openresty中http和C_json模块怎么用

这篇文章主要介绍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, "
") str = '{"hobby":["film","music","read"],"is_male":false,"name":"zhangsan","id":1,"age":null}' local obj = cjson.decode(str) ngx.say(obj.age, "
") ngx.say(obj.age == nil, "
") ngx.say(obj.age == cjson.null, "
") ngx.say(obj.hobby[1], "
")

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}nullfalsetruefilm

以上是"Openresty中http和C_json模块怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

模块 内容 浏览器 浏览 客户 客户端 数据 地址 对象 篇文章 配置 成功 代码 价值 兴趣 参数 命令 小伙 小伙伴 常用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网金融 科技 银优互联网科技有限公司 天津摩尔互联网科技 广州紫鲸互联网科技 海南购全球互联网科技 深圳国际航运科技和互联网 来此购互联网科技有限公司 厦门比较好的科技互联网公司 上海宁丞科技互联网 阿大互联网科技有限公司 乌鲁木齐新华智原互联网科技学校 保险科技服务互联网营销体系 中和天地互联网科技有限公司 工业互联网展湾科技股份有限公司 银行科技岗属于互联网吗 珠海东科互联网科技有限公司 艺电能源互联网科技有限公司招聘 兰石爱特工业互联网科技分公司 株洲百竞科技的互联网营销顾问 科技互联网产品 易通互联网络科技有限公司 中国最先进互联网科技公司 深圳市运趣互联网科技有限公司 互联网科技有哪些公司 湖北码尼互联网科技有限公司电话 美国互联网科技实力 上海互联网科技公司ppt 平安好医生打造互联网科技医疗 上海互联网科技园景观
0