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 estado | Significado | Respuesta típica |
|---|---|---|
| 200-299 | Éxito | Contiene los datos solicitados o confirmación |
| 300-399 | Redirección | Generalmente vacío o contiene información de redirección |
| 400-499 | Error del cliente | Contiene descripción del error |
| 500-599 | Error del servidor | Contiene 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
- Comprueba siempre primero el código de estado antes de procesar los datos de la respuesta
- Gestiona las respuestas vacías de forma adecuada, especialmente con los códigos de estado 204
- Revisa el contenido de la respuesta incluso en las respuestas de error, ya que pueden contener información útil
- 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())