Lua:
Wysyłanie żądania HTTP

Jak to zrobić:

Do wysyłania żądań HTTP w Lua użyjemy biblioteki socket.http. Przykładowy kod:

local http = require("socket.http")

-- Proste żądanie GET
local response, status, headers = http.request("http://httpbin.org/get")
if status == 200 then
    print("Odpowiedź:", response)
else
    print("Błąd:", status)
end

-- Żądanie POST
local body = "key1=value1&key2=value2"
headers = {
    ["Content-Type"] = "application/x-www-form-urlencoded",
    ["Content-Length"] = #body
}
response, status = http.request("http://httpbin.org/post", body, headers)
if status == 200 then
    print("Odpowiedź POST:", response)
else
    print("Błąd POST:", status)
end

Przykładowe wyjście:

Odpowiedź: {...json z odpowiedzią...}
Odpowiedź POST: {...json z odpowiedzią...}

Deep Dive

W Lua, wysyłanie żądań HTTP często wspiera biblioteka LuaSocket. Historia sięga 2004 roku i jest standardem w operacjach sieciowych w Lua. Inne opcje to lua-http czy luasec dla HTTPS. Ważne, by sprawdzić kompatybilność z wersją Lua.

Co do implementacji, socket.http jest blokującą biblioteką. Czyli, czeka na odpowiedź serwera, zawieszając inne procesy. W przypadkach gdzie to problematyczne, istnieją asynchroniczne alternatywy, takie jak copas czy lunasync.

Zobacz też