Response:getData()
Get the response body content as a string from the HTTP response.
Signature
getData(): string
Returns
string
- The response body content as a string
Description
The getData()
method retrieves the response body content from an HTTP response. The content is always returned as a string, regardless of the original format (JSON, XML, plain text, HTML, etc.).
Examples
Basic Usage
-- 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)
Working with JSON Data
-- 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)
Handling XML Responses
-- 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
Error Response Data
-- 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
POST Request Response Data
-- 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
Empty Response Handling
-- 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
Processing Different Content Types
-- 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
Large Response Handling
-- 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
Common Response Content Types
Content Type | Example Data | Usage |
---|---|---|
application/json | {"key":"value"} | REST APIs, modern web services |
text/plain | Simple text response | Status messages, logs |
text/html | <html><body>...</body></html> | Web pages, error pages |
application/xml | <?xml version="1.0"?><root>...</root> | SOAP APIs, XML data |
text/csv | name,age,city\nJohn,30,NYC | Data export, spreadsheets |
Notes
- Response data is always returned as a string, regardless of the original format
- Empty responses return an empty string
""
(common with 204 status codes) - Error responses (4xx, 5xx) may contain useful error information in the response body
- Large responses may consume significant memory - consider processing in chunks if needed
- You may need additional parsing libraries to work with JSON, XML, or other structured formats
- Always check if the response is empty before processing to avoid errors