如何在 Lua 中读取 POST 请求?

我有一个使用 Lua 编写的 Telegram 机器人,作为语言网络的爱好。我一直通过 getUpdates API 调用读取新消息。现在我想重写它以使用 webhooks,但我完全没有任何经验。我已经谷歌搜索过但没有找到确切的东西。我有点觉得 WSAPI 库是要使用的,但我不确定。此外,我真的不确定是否需要为读取 POST 请求(这是 Telegram 机器人 API 使用的所有内容)使用特殊库。我尝试使用 sockets:

socket = require 'socket'
server = assert(socket.bind("*", 9000))

function read(client, pattern, prefix)
  local data, emsg, partial = client:receive(pattern, prefix)
  if data then
    return data
  end
  if partial and #partial > 0 then
    return partial
  end
  return nil, emsg
end

while true do
  local client = server:accept()
  client:settimeout(3)
  local msg, err = read(client, '*a')

  if not err then
    print(msg)
    client:close()
  end
end

这里的 print(msg) 给我完整的 POST 请求,包括头信息,我可能可以解析它们(正文应该始终是 JSON)。我真的不太熟悉 HTTP 请求,也不确定我是否可以把第一个 { 之前的所有东西都丢掉。

我的配置是 Lua 5.2、Ubuntu x64 16.04 和 Nginx。我需要做的就是接收和读取 POST 请求,没有其他的需求。

TL;DR:我是否可以解析我从上述代码中接收到的 POST 请求,或者我是否遗漏了什么,比如可以让我的生活更轻松的库?

谢谢!

点赞