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)
endPrzykł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ż
- LuaSocket: http://w3.impa.br/~diego/software/luasocket/
- Dokumentacja LuaSocket: http://w3.impa.br/~diego/software/luasocket/http.html
- lua-http: https://github.com/daurnimator/lua-http
- LuaSec (dla HTTPS): https://github.com/brunoos/luasec