Saltar al contenido principal

Response

El objeto Response contiene el resultado de una petición HTTP realizada con el módulo Request. Proporciona acceso a los datos de la respuesta, el código de estado y otros metadatos devueltos por el servidor.

Descripción general

Los objetos Response son devueltos por los métodos de petición HTTP como get(), post(), put(), patch() y delete(). Encapsulan la respuesta del servidor y proporcionan métodos para acceder al contenido y a los metadatos de la respuesta.

Métodos

getData(): string

Obtiene el contenido del cuerpo de la respuesta como una cadena de texto.

Devuelve

string - El contenido del cuerpo de la respuesta

getResponseCode(): number

Obtiene el código de estado HTTP de la respuesta.

Devuelve

number - El código de estado HTTP (p. ej., 200, 404, 500)

Patrón de uso común

-- Make a request and handle the response
local response = Request("https://api.example.com/data"):get()

-- Get the status code to check if the request was successful
local statusCode = response:getResponseCode()

if statusCode == 200 then
-- Request was successful, get the data
local data = response:getData()
print("Response data: " .. data)
else
-- Request failed, handle the error
print("Request failed with status: " .. statusCode)
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Error details: " .. errorData)
end
end

Categorías de códigos de estado HTTP

Rango de estadoSignificadoRespuesta típica
200-299ÉxitoContiene los datos solicitados o confirmación
300-399RedirecciónGeneralmente vacío o contiene información de redirección
400-499Error del clienteContiene descripción del error
500-599Error del servidorContiene descripción del error

Formatos de datos de respuesta

Los datos de la respuesta siempre se devuelven como una cadena de texto, independientemente del formato original:

  • JSON: "{\"key\":\"value\"}" - Puede requerir análisis si dispones de un analizador JSON
  • XML: "<?xml version=\"1.0\"?><root>...</root>" - Contenido XML como cadena de texto
  • Texto plano: "Simple text response" - Contenido de texto directo
  • HTML: "<html><body>...</body></html>" - Contenido HTML como cadena de texto
  • Vacío: "" - Sin contenido (común en respuestas 204)

Mejores prácticas

  1. Comprueba siempre primero el código de estado antes de procesar los datos de la respuesta
  2. Gestiona las respuestas vacías de forma adecuada, especialmente con los códigos de estado 204
  3. Revisa el contenido de la respuesta incluso en las respuestas de error, ya que pueden contener información útil
  4. Prepárate para los errores de red que pueden impedir que se cree un objeto de respuesta

Ejemplos

Gestión básica de la respuesta

local response = Request("https://api.example.com/users/123"):get()
local status = response:getResponseCode()

if status == 200 then
local userData = response:getData()
print("User data: " .. userData)
else
print("Failed to get user data. Status: " .. status)
end

Gestión de errores

local response = Request("https://api.example.com/invalid"):get()
local status = response:getResponseCode()

if status == 404 then
print("Resource not found")
elseif status == 401 then
print("Authentication required")
elseif status >= 500 then
print("Server error: " .. status)
local errorDetails = response:getData()
print("Error details: " .. errorDetails)
else
print("Unexpected status code: " .. status)
end

Trabajar con diferentes métodos HTTP

-- GET request
local getResponse = Request("https://api.example.com/data"):get()
print("GET status: " .. getResponse:getResponseCode())

-- POST request
local postResponse = Request("https://api.example.com/data")
:setParameter("key", "value")
:post()
print("POST status: " .. postResponse:getResponseCode())

-- DELETE request
local deleteResponse = Request("https://api.example.com/data/123"):delete()
print("DELETE status: " .. deleteResponse:getResponseCode())