Módulo HTTP
Este módulo proporciona funciones para realizar solicitudes HTTP desde scripts Lua. Las funciones devuelven una tabla con los resultados de la solicitud.
Funciones Disponibles
Sección titulada «Funciones Disponibles»http.request(method, url, body, headers, options)
Sección titulada «http.request(method, url, body, headers, options)»Función genérica para realizar solicitudes HTTP con cualquier método.
Parámetros:
-
method(string): Método HTTP (GET, POST, PUT, DELETE, PATCH, HEAD) -
url(string): URL del endpoint -
body(string, opcional): Cuerpo de la solicitud -
headers(tabela, opcional): Encabezados HTTP como pares clave-valor -
options(tabela, opcional): Opciones adicionales de la solicitud
Opciones disponibles:
-
verify(boolean): Verificar certificados SSL (predeterminado: true) -
charset(string): Charset para decodificación de la respuesta (predeterminado: “utf-8”)
Aviso de Seguridad:
Deshabilitar la verificación SSL (verify = false) expone la conexión a ataques “man-in-the-middle” y debe usarse solo en entornos de desarrollo o prueba controlados. Nunca utilice esta opción en producción con servidores reales o con datos sensibles.
Valor de retorno:
Devuelve una tabla con:
-
status(number): Código de estado HTTP -
body(string): Cuerpo de la respuesta
Ejemplo:
local resultado = http.request("POST", "https://api.exemplo.com/dados", '{"nome": "teste", "valor": 123}', {["Content-Type"] = "application/json"}, {verify = true, charset = "utf-8"})
print("Status:", resultado.status)print("Resposta:", resultado.body)http.get(url, body, headers, options)
Sección titulada «http.get(url, body, headers, options)»Realiza una solicitud HTTP GET.
Parámetros:
-
url(string): URL del endpoint -
body(string, opcional): Cuerpo de la solicitud (raro para GET, pero soportado) -
headers(tabela, opcional): Encabezados HTTP -
options(tabela, opcional): Opciones adicionales
Ejemplo:
local resultado = http.get("https://api.exemplo.com/usuarios/1", nil, {["Authorization"] = "Bearer token123"}, {verify = true})
if resultado.status == 200 then print("Dados recebidos:", resultado.body)else print("Erro:", resultado.status)endhttp.post(url, body, headers, options)
Sección titulada «http.post(url, body, headers, options)»Realiza una solicitud HTTP POST.
Parámetros:
-
url(string): URL del endpoint -
body(string): Cuerpo de la solicitud (generalmente JSON o datos de formulario) -
headers(tabela, opcional): Encabezados HTTP -
options(tabela, opcional): Opciones adicionales
Ejemplo:
local dados_json = '{"nome": "Novo Usuário", "email": "usuario@exemplo.com"}'
local resultado = http.post("https://api.exemplo.com/usuarios", dados_json, { ["Content-Type"] = "application/json", ["Authorization"] = "Bearer token123" })
if resultado.status == 201 then print("Usuário criado com sucesso!") print("Resposta:", resultado.body)else print("Falha ao criar usuário. Status:", resultado.status)endhttp.put(url, body, headers, options)
Sección titulada «http.put(url, body, headers, options)»Realiza una solicitud HTTP PUT para actualizar recursos.
Parámetros:
-
url(string): URL del endpoint -
body(string): Cuerpo de la solicitud con datos actualizados -
headers(tabela, opcional): Encabezados HTTP -
options(tabela, opcional): Opciones adicionales
Ejemplo:
local dados_atualizados = '{"nome": "Usuário Atualizado", "ativo": true}'
local resultado = http.put("https://api.exemplo.com/usuarios/1", dados_atualizados, { ["Content-Type"] = "application/json", ["Authorization"] = "Bearer token123" })
if resultado.status == 200 then print("Usuário atualizado com sucesso!")else print("Falha na atualização. Status:", resultado.status)endhttp.delete(url, body, headers, options)
Sección titulada «http.delete(url, body, headers, options)»Realiza una solicitud HTTP DELETE para eliminar recursos.
Parámetros:
-
url(string): URL del endpoint -
body(string, opcional): Cuerpo de la solicitud (opcional para DELETE) -
headers(tabela, opcional): Encabezados HTTP -
options(tabela, opcional): Opciones adicionales
Ejemplo:
local resultado = http.delete("https://api.exemplo.com/usuarios/1", nil, {["Authorization"] = "Bearer token123"})
if resultado.status == 204 then print("Usuário removido com sucesso!")else print("Falha ao remover usuário. Status:", resultado.status)endhttp.head(url, body, headers, options)
Sección titulada «http.head(url, body, headers, options)»Realiza una solicitud HTTP HEAD para obtener solo encabezados.
Parámetros:
-
url(string): URL del endpoint -
body(string, opcional): Cuerpo de la solicitud -
headers(tabela, opcional): Encabezados HTTP -
options(tabela, opcional): Opciones adicionales
Ejemplo:
local resultado = http.head("https://api.exemplo.com/usuarios/1", nil, {["Authorization"] = "Bearer token123"})
print("Status da verificação:", resultado.status)-- La respuesta HEAD generalmente no tiene cuerpoInformación Adicional
Sección titulada «Información Adicional»URL Automática
Sección titulada «URL Automática»Si la URL no contiene un esquema (como http:// o https://), el sistema automáticamente añade http:// como prefijo.
-- Estas dos llamadas son equivalentes:local r1 = http.get("api.exemplo.com/dados")local r2 = http.get("http://api.exemplo.com/dados")Verificación SSL
Sección titulada «Verificación SSL»Por defecto, la verificación de certificados SSL está habilitada. Para deshabilitar (útil en entornos de desarrollo/prueba):
Atención: Deshabilitar la verificación SSL (verify = false) expone la conexión a ataques “man-in-the-middle” y debe usarse solo en entornos de desarrollo o prueba controlados. Nunca utilice esta opción en producción con servidores reales o con datos sensibles.
local resultado = get("https://servidor-local.com", nil, nil, {verify = false})Charsets
Sección titulada «Charsets»Es posible especificar un charset diferente para decodificar la respuesta:
local resultado = get("https://api.exemplo.com/dados", nil, nil, {charset = "iso-8859-1"})Ejemplo de Uso
Sección titulada «Ejemplo de Uso»-- Ejemplo de monitorización de APIfunction verificar_saude_api() local resultado = http.get("https://api.exemplo.com/health", nil, {["User-Agent"] = "MonstaAgent/1.0"} )
if resultado.status == 200 then local dados = resultado.body -- Procesar respuesta JSON si es necesario print("API está saudável") return true else print("API com problemas. Status:", resultado.status) return false endend