将 curl 转换为 Lua
curl2code 使用 http 库将 curl 命令转换为 Lua 代码。转换过程通过 WebAssembly 在您的浏览器中运行,以确保完全的隐私。对于 Python,请查看我们的 curl 转 Python 转换器。对于 Ruby,请参阅 curl 转 Ruby。下方是实用的 Lua 示例。
如何从浏览器复制 curl
- 1
打开开发者工具
按 F12 或 Ctrl+Shift+I 打开浏览器开发者工具。
- 2
进入 Network 标签页
点击 Network (网络) 标签页,并执行触发 HTTP 请求的操作。
- 3
复制为 cURL
右键点击请求 → Copy (复制) → Copy as cURL (复制为 cURL)。然后将其粘贴到上方。
常见问题解答
什么是 Lua http?
lua-http(或来自 LuaSocket 的 socket.http)是在 Lua 中发起 HTTP 请求的标准方式。它提供基础的 GET、POST 和自定义请求方法。如需更多功能,lua-resty-http 在 OpenResty/Nginx 环境中很流行。通过 luarocks install http 安装。curl2code 使用 http 模块生成代码。
socket.http 对比 lua-resty-http 对比 lua-curl —— 该用哪一个?
socket.http (LuaSocket) 是通用 Lua 的标准。lua-resty-http 用于具有非阻塞 I/O 的 OpenResty/Nginx。lua-curl 包装了 libcurl 以提供完整的协议支持。独立脚本使用 socket.http,Web 服务器使用 resty-http。有关类似的脚本编写,请参阅 curl 转 Python 或 curl 转 Ruby。
如何在 Lua 中处理身份验证?
在 headers 表中设置 Authorization 请求头:headers = { Authorization = "Bearer token" }。对于 Basic 认证,使用 base64 库进行编码:"Basic " .. base64.encode(user .. ":" .. pass)。在请求选项表中传递 headers。curl2code 处理 -u 和请求头标志。
如何在 Lua 中发送多部分表单数据?
手动构建带有边界字符串的多部分主体,或使用 multipart-post 等辅助库。设置带有边界的 Content-Type 请求头。LuaSocket 的 http.request 接受一个用于流式传输大型上传的 source 函数。curl2code 将 -F 标志转换为 Lua 语法。
如何在 Lua 中处理 HTTP 错误?
LuaSocket 的 http.request 返回多个值:body, code, headers, status = http.request(url)。检查 code 获取 HTTP 状态(200、404 等),或在网络故障时检查其是否为 nil。使用 Lua 的 assert() 或 if not body then 模式进行错误检查。
如何在 Lua 中解析 JSON?
使用 cjson 模块(快速,基于 C):local data = cjson.decode(json_string)。对于编码:cjson.encode(table)。在 OpenResty 中,cjson 是预装的。对于独立 Lua,通过 luarocks install lua-cjson 安装。或者使用纯 Lua 编写的 dkjson。
如何在 Lua 中设置超时?
使用 LuaSocket:全局设置 http.TIMEOUT = 30,或创建一个自定义连接并调用 :settimeout(30)。在 lua-resty-http 中,使用 httpc:set_timeout(30000)(毫秒)。超时可以防止脚本在无响应的服务器上无限期挂起。
如何在 Lua 中使用代理?
使用 LuaSocket 时,在请求选项中设置 proxy 字段:http.request{ url = target, proxy = "http://proxy:8080" }。对于 lua-resty-http,直接连接到代理并使用 CONNECT 方法进行 HTTPS 隧道传输。curl2code 将 -x 标志转换为适当的 Lua 代理设置。
如何在 Lua 中发送带有 JSON 正文的 POST 请求?
使用 curl2code 将类似于 curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' URL 的 curl POST 命令转换为 Lua。生成的代码使用 http.request(url, json_body, headers)。curl2code 会自动检测带有 JSON 内容的 -d/--data 标志,并在 http 代码中设置相应的 Content-Type 请求头。
如何在 Lua 中添加 Bearer 令牌授权?
将 curl -H "Authorization: Bearer YOUR_TOKEN" URL 传递给 curl2code,它会生成带有认证请求头的 http 代码:headers['Authorization'] = 'Bearer YOUR_TOKEN'。curl2code 会从 -H "Authorization: Bearer ..." 和 --oauth2-bearer 标志中检测 Bearer 令牌。对于 Basic auth,请使用 -u user:pass。
如何在 Lua 中设置 Content-Type 请求头?
curl2code 将 curl -H "Content-Type: application/json" URL 转换为带有正确请求头的 http 代码:headers['Content-Type'] = 'application/json'。对于 -d 数据,curl 默认使用 application/x-www-form-urlencoded;对于 -F 表单上传,它使用 multipart/form-data。curl2code 会将每一项映射到正确的 http API。