lua简易版请求封装

概要

基于 luajava 简易封装的异步请求库
演示

表结构

默认支持 GET请求方式

-- kox.lua
local kox = {
    _URL = nil,
    _DATA = nil,
    SomeThing = {},
    _COOKIES = nil,
    _METHOD = "get",
    _ChARSET = nil,
    _HEADERS = {
        ["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69"
    }
}

请求定义

---设置请求地址
---@param fetchUrl string
---@return table
function kox:setUrl(fetchUrl)
    if self._URL == nil then
        self._URL = fetchUrl
    end
    return self
end

--- 增加请求头
---@param key string
---@param value string
function kox:setHeaders(key, value, ...)
    local op = { ... }

    self._HEADERS[string.lower(key)] = value

    if #op > 0 then
        for k, v in pairs(op) do
            self._HEADERS[string.lower(tostring(k))] = v
        end
    end

    return self
end

--- 设置请求模式
---@param method string
function kox:setMethod(method)
    self._METHOD = string.lower(method)
    return self
end

--- 增加参数
---@param data string
function kox:setData(data)
    self._DATA = data
    return self
end

发送定义

使用 xpcall 来接收成功和失败的回调

--- 发送请求
---@param callBack function
function kox:send(callBack, errorBack)
    xpcall(function()
        if self._METHOD == "get" then
            Http.get(self._URL, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
        elseif self._METHOD == "post" then
            Http.post(self._URL, self._DATA, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
        end
    end, errorBack)
    return self
end

-- 默认传递参数
function kox.Err(err)
    --log:debug(err)
    print(err)
end

使用示例

require "import"
import "cjson"

-- 调用示例
function success(code, resp)
    if code == 200 then
        print(resp)
    end
end

local params = cjson.encode({
	"username": "admin",
	"password": "xxxxx",
})

 -- 导入必须库
local Request = import "kox"
Request:setUrl("https://cccc.xxx")
Request:setMethod("Post")
Request:setData(params)
Request:setHeaders("Content-Type", "application/x-www-form-urlencoded") -- 设置请求头
Request:send(success, Request.Err) -- 发送请求

完整代码

-- kox.lua
local kox = {
    _URL = nil,
    _DATA = nil,
    SomeThing = {},
    _COOKIES = nil,
    _METHOD = "get",
    _ChARSET = nil,
    _HEADERS = {
        ["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.69"
    }
}

---设置请求地址
---@param fetchUrl string
---@return table
function kox:setUrl(fetchUrl)
    if self._URL == nil then
        self._URL = fetchUrl
    end
    return self
end

--- 增加请求头
---@param key string
---@param value string
function kox:setHeaders(key, value, ...)
    local op = { ... }

    self._HEADERS[string.lower(key)] = value

    if #op > 0 then
        for k, v in pairs(op) do
            self._HEADERS[string.lower(tostring(k))] = v
        end
    end

    return self
end

--- 设置请求模式
---@param method string
function kox:setMethod(method)
    self._METHOD = string.lower(method)
    return self
end

--- 增加参数
---@param data string
function kox:setData(data)
    self._DATA = data
    return self
end

--- 发送请求
---@param callBack function
function kox:send(callBack, errorBack)
    xpcall(function()
        if self._METHOD == "get" then
            Http.get(self._URL, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
        elseif self._METHOD == "post" then
            Http.post(self._URL, self._DATA, self._COOKIES, self._ChARSET, self._HEADERS, callBack)
        end
    end, errorBack)
    return self
end

-- 默认传递参数
function kox.Err(err)
    print(err)
end

return kox
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值