--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by admin. --- DateTime: 2025/10/15 09:12 --- --local snowflake = require("util.snowflake") local helpers = require("share.helpers") -- --local workerId = 0 -- 假设当前机器的ID是1,范围在[0, 31]之间 --local datacenterId = 0 -- 数据中心ID,范围在[0, 31]之间 --local snow = snowflake.new(workerId, datacenterId) --local id = snow:generateUniqueId()-- 生成ID --ngx.say("Generated ID:"..snow.int64_to_string(id)) --max =a and b or c--a?b:c local cjson = require("cjson.safe") --[[ local uuid = require("resty.jit-uuid") uuid.seed() local val = uuid() local uid = uuid.generate_v4() ---> v4 UUID local uid1 = uuid.generate_v3() ---> v3 UUID (name-based with MD5) local uid2 = uuid.generate_v5() ---> v5 UUID (name-based with SHA-1) uuid.is_valid() ---> true/false (automatic JIT PCRE or Lua patterns) --ngx.say(val.." "..uid) local args = ngx.req.get_uri_args() local pageNum = args["pagenum"] or 1 local pageSize = args["pagesize"] or 10 ngx.say("pageNum:", pageNum, " pageSize:", pageSize) --]] local cjson = require "cjson" --local sampleJson = [[{"age":"23","testArray":{"array":[8,9,11,14,25]},"Himi":"himigame.com"}]] local sampleJson = [[{"raw_header":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9","signature":"zkKAmXifqWDrMaLpXe8hrA1JpDRbdlgwS-yxNnQUOBw","raw_payload":"eyJpYXQiOjE3NjE4OTIwNDMsImV4cCI6MTc2MTg5NTY0MywidXNlcmlkIjoiYWRtaW4iLCJyb2xlIjoiIn0","valid":true,"verified":true,"reason":"everything is awesome~ :p","header":{"alg":"HS256","typ":"JWT"},"payload":{"iat":1761892043,"userid":"admin","exp":1761895643,"role":""}}]] --解析json字符串 local data = cjson.decode(sampleJson); --打印json字符串中的age字段 ngx.say(data["raw_header"]); --打印数组中的第一个值(lua默认是从0开始计数) ngx.say(data["payload"]["userid"]); --[[ local jwttoken = require("util.token") --获取请求头中的令牌数据 local auth_header = ngx.var.http_Authorization --调用令牌校验 local result = jwttoken.authorizationToken((auth_header)) -- 输出结果 ngx.say(cjson.encode(result)) ngx.exit(result.code) --]] --[[ local jsonschema = require("jsonschema") -- 定义一个JSON Schema -- 定义一个JSON Schema local schema = { {type = "object", properties = { {name = "username", type = "string"}, {name = "phone", type = "string"}, {name = "email", type = "string"}, {name = "idcard", type = "string"}, {name = "name", type = "string"}, {name = "office_phone", type = "string"}, {name = "telephone", type = "string"}, {name = "display_name", type = "string"}, }, required = {"username", "phone", "email", "idcard"}} } -- 待验证的JSON数据 --local json_data = '{"name": "Alice", "age": 30}' --local data, pos, err = cjson.decode(json_data) --if err then -- error("JSON decoding error: " .. err) --end --读取请求体的数据 ngx.req.read_body() --获取请求数据 local body_data = ngx.req.get_body_data() -- 验证数据是否符合schema local ok, err = jsonschema:generate_validator(body_data, schema) if not ok then error("Validation failed: " .. err) else print("Validation succeeded!") end --]] --用于接收前端数据的对象 local args=nil --获取前端的请求方式 并获取传递的参数 local request_method = ngx.var.request_method --判断是get请求还是post请求并分别拿出相应的数据 if"GET" == request_method then args = ngx.req.get_uri_args() elseif "POST" == request_method then ngx.req.read_body() args = ngx.req.get_post_args() --兼容请求使用post请求,但是传参以get方式传造成的无法获取到数据的bug if (args == nil or args.data == null) then args = ngx.req.get_uri_args() end end --获取前端传递的name值 local name = --响应前端 ngx.say("linux hello:"..name) --[[ local M = {} local charset = {} do -- [0-9a-zA-Z] for c = 48, 57 do table.insert(charset, string.char(c)) end for c = 65, 90 do table.insert(charset, string.char(c)) end for c = 97, 122 do table.insert(charset, string.char(c)) end end function M.uuid(length) local res = "" for i = 1, length do res = res .. charset[math.random(1, #charset)] end return res end return M --]] --[[ local jwt = require("resty.jwt") local secret_key = "!@#$5412$#@!" -- 确保这个密钥足够安全并保密 --设置JWT的有效载荷 local obj = { header = {typ="JWT", alg="HS256"}, payload = { -- 自定义数据 username = "admin", role = "admin", iss = "your_issuer", -- 签发者 sub = "1234567890", -- 主题 exp = os.time() + 3600, -- 过期时间(例如:当前时间+1小时) iat = os.time() -- 签发时间 } } local jwt_token = jwt:sign(secret_key, obj) ngx.say(jwt_token) local jwt_obj = jwt:verify(secret_key, jwt_token) local param = cjson.encode(jwt_obj) ngx.say(param) local ok, claims = jwt:verify(jwt_token) -- 使用之前生成的token if ok then print("Token is valid") for k, v in pairs(claims) do print(k, v) end else print("Token is invalid:", claims) -- claims将包含错误信息 end --]] --[[ --创建新的JWT对象 --local jwt_obj = jwt:new() --设置密钥 local secret_key = "!@#$5412$#@!" -- 确保这个密钥足够安全并保密 --jwt_obj:set_secret(secret_key) --设置JWT的有效载荷 local payload = { iss = "your_issuer", -- 签发者 exp = os.time() + 3600, -- 过期时间(例如:当前时间+1小时) iat = os.time(), -- 签发时间 sub = "1234567890", -- 主题 data = { -- 自定义数据 username = "admin", role = "admin" } } -- 生成JWT token local jwt_token, err = jwt:sign(secret_key, payload) if err then error("Failed to generate JWT token: " .. err) end print("Generated JWT Token:", jwt_token) local ok, claims = jwt:verify(jwt_token) -- 使用之前生成的token if ok then print("Token is valid") for k, v in pairs(claims) do print(k, v) end else print("Token is invalid:", claims) -- claims将包含错误信息 end --]] --[[ --引用使用的库文件 local Model = require("share.model") --创建一个数据表相关的模型 local userModel = Model:new('sys_user') --获取数据表中的记录数 local code, res = userModel:count() ngx.say(res) --查询表中id为1的数据记录 code, res = userModel:find("1") if res ~= nil then ngx.say(table.getn(res)) end --查询表中的所有记录 code, res = userModel:all() --显示查询到的数据记录 if code == 0 then for _, row in ipairs(res) do for key, value in pairs(row) do ngx.say(key .. ":" .. tostring(value)) end end end --分页 获取数据表中的记录 local data = nil code, data = userModel:paginate(1, 10) local count = data.total ngx.say("data total:", count) for _, row in ipairs(data.data) do ngx.say("begin show data:") for key, value in pairs(row) do ngx.say(key .. ":" .. tostring(value)) end end ngx.say("----begin where and query---") -- 返回 users 表中 username 字段的值是 `cgreen` 的,`password` 字段的值是 `xxxxxx` 的多条数据,注意此处返回是 table 数组,`first()` 方法返回的是单条数据 code, res = userModel:where('name','=','zhangsan'):where('password','=','111111'):get() --ngx.say(code) --if res ~= nil then -- for _, row in ipairs(res) do -- for key, value in pairs(row) do -- ngx.say(key .. ":" .. tostring(value)) -- end -- end --end --]] --[[ --ngx.say("----begin where or query---") -- 返回 `name` 为 `xxx` 或者 `yyy` 的所有用户 table 数组 code, res = userModel:where('name','=','zhangsan'):orwhere('name','=','admin'):get() --for _, row in ipairs(res) do -- for key, value in pairs(row) do -- ngx.say(key .. ":" .. tostring(value)) -- end --end --orderby(column, option)方法,第一个参数传入排序的列名,第二个参数默认为ASC 也可以传入 ASC 正序 或 DESC 倒序(不区分大小写), code, res = userModel:orderby('created_time'):get() --for _, row in ipairs(res) do -- for key, value in pairs(row) do -- ngx.say(key .. ":" .. tostring(value)) -- end --end -- 创建一个用户 code, res = userModel:create({ id='3', password='22222', name='lisi', email='lisi@gmail.com', }) -- 更新 id = 1 的 user 的 name 为 test, avatar 为 NULL code, res = userModel:where('id', '=', '3'):update({ phone='666666', email='zhangsan@qq.com' }) --输出更新后影响的行总数 ngx.say("update affected_rows: ", res.affected_rows) -- 删除 id = 1 的用户 code, res = userModel:where('id','=','3'):delete() ngx.say("delete affected_rows: ", res.affected_rows) --]] --[[ --读取请求体的数据 ngx.req.read_body() --获取请求数据 local body_data = ngx.req.get_body_data() ngx.say(body_data) local data = cjson.decode(body_data) --键值为id产生uuid数据值,增加到json中 data.id = helpers.getUuid() local ret = helpers.convert_json(data) ngx.say(ret) --]] --local header = ngx.req.get_headers() --for k,v in pairs(header) do -- ngx.say("[header] name:", k, "value:", v) --end --local payloads = ngx.req.get_uri_args() --for k,v in pairs(payloads) do -- ngx.say("[params] name:", k, " value:", v) --end --去掉组装最后一位逗号(,) --local newKeys = keys:sub(1, #keys -1) --local newValues = values:sub(1, #values -1) --[[ --读取请求体的数据 --ngx.req.read_body() --获取请求数据 local body_data = ngx.req.get_body_data() if not body_data then ngx.say("read file error:", err) return ngx.exit(400) end local len = #body_data local file_name = ngx.req.get_body_file() ngx.say("file length:", len) ngx.req.read_body_in_buffer(ngx.var.request_body_file) ngx.say(body_data) --]] --[[ local cjson = require("cjson.safe") local file_path = "/home/frankly/work/test.dat" local file_length = 1024 * 1024 * 400 local f, err = io.input(file_path, "r") if not f then ngx.say("read file error:"..err) return end local content = f:read(file_length) --读取文件内容 f:close() --关闭文件 --ngx.say(content) local res = { key = "data", value = content } --ngx.header["Length"] = #content ngx.header["Content-Type"] = 'application/json; charset=UTF-8' ngx.say(cjson.encode(res)) ngx.log(ngx.INFO, "send data success") --]]