Lua:
Enviando uma requisição HTTP
Como fazer:
Para enviar uma requisição HTTP em Lua, você vai precisar de uma biblioteca externa, pois as funcionalidades padrões não oferecem suporte direto para isso. O exemplo a seguir usa a biblioteca socket.http
para fazer uma requisição GET simples:
local http = require("socket.http")
local response_body = {}
local res, code, response_headers = http.request{
url = "http://httpbin.org/get",
sink = ltn12.sink.table(response_body)
}
if code == 200 then
print("Requisição bem-sucedida!")
print("Resposta do corpo:", table.concat(response_body))
else
print("Erro na requisição:", code)
end
Aprofundando
Enviar requisições HTTP não é nativo em Lua. Historicamente, isso é resolvido usando bibliotecas como socket.http
do LuaSocket, que é bem estabelecida e amplamente utilizada. Alternativas modernas incluem lua-http
, que é mais recente e promete uma API mais flexível e recursos HTTP/2.
Quanto aos detalhes de implementação, uma requisição HTTP envolve montar uma mensagem HTTP adequada e enviar para o servidor, aguardando por uma resposta que também seguirá o protocolo HTTP. Diferentes métodos de requisição (GET, POST, PUT, DELETE etc.) são usados conforme a necessidade da operação a ser realizada. Tratar erros é essencial, já que muitas coisas podem dar errado nesse processo.
Veja também
- Documentação LuaSocket: http://w3.impa.br/~diego/software/luasocket/home.html
- Documentação lua-http: http://daurnimator.github.io/lua-http/
- Tutorial HTTP da Mozilla (em inglês): https://developer.mozilla.org/en-US/docs/Web/HTTP
Lembre-se de sempre verificar a compatibilidade das bibliotecas com a versão atual do Lua e o seu ambiente de desenvolvimento.