如何在Lua中读取POST请求?

时间:2017-04-18 08:10:29

标签: post nginx lua telegram-bot

我有这个用Lua编写的Telegram机器人,我正在做一个语言网络的爱好。我一直在通过getUpdates API调用阅读新消息。现在我想重写它以使用webhooks,但我没有任何经验。我用谷歌搜索但没有找到任何确定的东西。我觉得WSAPI是可以使用的库,但我不确定。而且,我不确定我是否需要任何特殊的库来读取POST请求(这是Telegram bot API使用的全部内容)。我尝试使用套接字:

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请求,还是我错过了一些东西,比如让我的生活更轻松的图书馆?

谢谢!

0 个答案:

没有答案