Saltar al contenido principal

Response:getData()

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

Firma

getData(): string

Devuelve

string - El contenido del cuerpo de la respuesta como una cadena de texto

Descripción

El método getData() recupera el contenido del cuerpo de la respuesta de una respuesta HTTP. El contenido siempre se devuelve como una cadena de texto, independientemente del formato original (JSON, XML, texto plano, HTML, etc.).

Ejemplos

Uso básico

-- Make a GET request and get the response data
local response = Request("https://api.example.com/users"):get()
local userData = response:getData()
print("User data: " .. userData)

Trabajar con datos JSON

-- Get JSON response data
local response = Request("https://api.example.com/posts/1"):get()
local jsonData = response:getData()

-- jsonData will be a string like: "{\"id\":1,\"title\":\"Sample Post\",\"body\":\"Content\"}"
print("Raw JSON: " .. jsonData)

-- Note: You would need a JSON parser to convert this string to a Lua table
-- For example (if you have a JSON parser available):
-- local parsedData = json.decode(jsonData)
-- print("Post title: " .. parsedData.title)

Gestión de respuestas XML

-- Get XML response data
local response = Request("https://api.example.com/data.xml"):get()
local xmlData = response:getData()

-- xmlData will contain XML content as a string
if xmlData and xmlData ~= "" then
print("XML data received: " .. xmlData)
-- You would need an XML parser to process this data
end

Datos de respuesta de error

-- Make a request that might fail
local response = Request("https://api.example.com/invalid"):get()
local statusCode = response:getResponseCode()

if statusCode ~= 200 then
-- Get error details from response body
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Error details: " .. errorData)
else
print("No error details provided")
end
end

Datos de respuesta de una petición POST

-- Create a resource and get the response
local response = Request("https://api.example.com/users")
:setParameter("name", "John Doe")
:setParameter("email", "john@example.com")
:post()

local status = response:getResponseCode()
local responseData = response:getData()

if status == 201 then
print("User created successfully!")
print("Created user data: " .. responseData)
else
print("Failed to create user. Status: " .. status)
if responseData then
print("Error: " .. responseData)
end
end

Gestión de respuestas vacías

-- Handle responses that might be empty
local response = Request("https://api.example.com/delete/123"):delete()
local status = response:getResponseCode()
local data = response:getData()

if status == 204 then
-- No content response
print("Delete successful (no content returned)")
if data == "" or not data then
print("Response is empty as expected")
end
elseif status == 200 then
print("Delete successful with response: " .. data)
else
print("Delete failed with status: " .. status)
end

Procesamiento de diferentes tipos de contenido

-- Check Content-Type header if available (this would require accessing response headers)
-- For now, we can detect common patterns in the data
local response = Request("https://api.example.com/data"):get()
local data = response:getData()

if data and data ~= "" then
-- Detect JSON format
if string.sub(data, 1, 1) == "{" or string.sub(data, 1, 1) == "[" then
print("Received JSON data")
-- Process as JSON
-- Detect XML format
elseif string.find(data, "^<%?xml") or string.find(data, "^<[^>]+>") then
print("Received XML data")
-- Process as XML
-- Detect HTML format
elseif string.find(data, "^<html") or string.find(data, "^<!DOCTYPE") then
print("Received HTML data")
-- Process as HTML
else
print("Received plain text data")
-- Process as plain text
end

print("Data length: " .. string.len(data) .. " characters")
else
print("No data received")
end

Gestión de respuestas grandes

-- Handle potentially large responses
local response = Request("https://api.example.com/large-data"):get()
local data = response:getData()

if data then
local dataSize = string.len(data)
print("Received " .. dataSize .. " characters of data")

if dataSize > 10000 then
print("Large response detected - first 100 characters:")
print(string.sub(data, 1, 100) .. "...")
else
print("Complete response:")
print(data)
end
end

Tipos de contenido de respuesta comunes

Tipo de contenidoDatos de ejemploUso
application/json{"key":"value"}APIs REST, servicios web modernos
text/plainSimple text responseMensajes de estado, registros
text/html<html><body>...</body></html>Páginas web, páginas de error
application/xml<?xml version="1.0"?><root>...</root>APIs SOAP, datos XML
text/csvname,age,city\nJohn,30,NYCExportación de datos, hojas de cálculo

Notas

  • Los datos de la respuesta siempre se devuelven como una cadena de texto, independientemente del formato original
  • Las respuestas vacías devuelven una cadena vacía "" (común con los códigos de estado 204)
  • Las respuestas de error (4xx, 5xx) pueden contener información de error útil en el cuerpo de la respuesta
  • Las respuestas grandes pueden consumir mucha memoria; considera procesarlas por fragmentos si es necesario
  • Es posible que necesites bibliotecas de análisis adicionales para trabajar con JSON, XML u otros formatos estructurados
  • Comprueba siempre si la respuesta está vacía antes de procesarla para evitar errores