Lewati ke konten utama

HTTP

http itu client HTTP global yang async. Backed by reqwest plus rustls + json + socks — sama plumbing-nya kayak licensing layer, jadi request bisa nembak https + socks5 transparan. Tiap call bakal yield script-nya sampai round-trip selesai (atau timeout-nya kena).

local res = http.get("https://api.example.com/data")
print(res.status, res.ok, res.body)

Opsi request

Tiap method nerima URL plus tabel HttpRequestOpts opsional. Semua field opsional — pass nil/skip aja kalau mau pake default.

KeyTipeDefaultCatatan
headers{[string]: string}?Header request custom. Last value wins kalau ada duplicate.
bodystring?Body string mentah. Mutex sama json (kalau dua-duanya di-set, json yang menang).
jsonany?JSON-serialize value-nya, set Content-Type: application/json, kirim sebagai body.
timeoutnumber?30000Timeout per-request dalam milliseconds.

Shape response

Tiap call http.* balikin tabel HttpResponse. Body-nya selalu dibaca habis sebagai string — ga ada varian streaming.

FieldTipeCatatan
statusnumberHTTP status sebagai integer (200, 404, 500, …).
okbooleantrue kalau status 2xx, false selain itu.
bodystringBody response sebagai string UTF-8. Kosong kalau response ga bawa body.
headers{[string]: string}Header response sebagai tabel flat. Last-value-wins kalau ada duplicate.

Methods

http:get(url, opts?)

FieldTipe
Signature(self: Http, url: string, opts: HttpRequestOpts?) → HttpResponse
ReturnsHttpResponse — lihat shape di atas
Common errorsraise kalau URL salah, network gagal, timeout, atau arg json invalid
Asyncyes — yield sampai response selesai atau timeout-nya kena
local res = http.get("https://api.example.com/users", {
headers = { ["Authorization"] = "Bearer xxx" },
timeout = 5000,
})
if res.ok then
print(res.body)
end

http:post(url, opts?)

FieldTipe
Signature(self: Http, url: string, opts: HttpRequestOpts?) → HttpResponse
ReturnsHttpResponse — lihat shape di atas
Common errorsraise kalau URL salah, network gagal, timeout, atau arg json invalid
Asyncyes — yield sampai response selesai atau timeout-nya kena
local res = http.post("https://discord.com/api/webhooks/...", {
json = { content = "bot online" },
headers = { ["Content-Type"] = "application/json" },
timeout = 10000,
})
print(res.status)

http:put(url, opts?)

FieldTipe
Signature(self: Http, url: string, opts: HttpRequestOpts?) → HttpResponse
ReturnsHttpResponse — lihat shape di atas
Common errorsraise kalau URL salah, network gagal, timeout, atau arg json invalid
Asyncyes — yield sampai response selesai atau timeout-nya kena
http.put("https://api.example.com/users/42", {
json = { name = "renamed" },
})

http:delete(url, opts?)

FieldTipe
Signature(self: Http, url: string, opts: HttpRequestOpts?) → HttpResponse
ReturnsHttpResponse — lihat shape di atas
Common errorsraise kalau URL salah, network gagal, timeout, atau arg json invalid
Asyncyes — yield sampai response selesai atau timeout-nya kena
http.delete("https://api.example.com/users/42")

Lihat juga

  • JSON — pasangkan sama http buat encode/decode body lebih rapi