Response:getData()
Ruft den Inhalt des Antwortkörpers als Zeichenkette aus der HTTP-Antwort ab.
Signatur
getData(): string
Rückgabe
string - Der Inhalt des Antwortkörpers als Zeichenkette
Beschreibung
Die Methode getData() ruft den Inhalt des Antwortkörpers aus einer HTTP-Antwort ab. Der Inhalt wird immer als Zeichenkette zurückgegeben, unabhängig vom ursprünglichen Format (JSON, XML, Klartext, HTML usw.).
Beispiele
Grundlegende Verwendung
-- 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)
Arbeiten mit JSON-Daten
-- 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)
Verarbeitung von XML-Antworten
-- 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
Fehlerantwort-Daten
-- 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
Antwortdaten einer POST-Anfrage
-- 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
Behandlung leerer Antworten
-- 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
Verarbeitung verschiedener Inhaltstypen
-- 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
Behandlung großer Antworten
-- 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
Häufige Antwort-Inhaltstypen
| Content Type | Example Data | Usage |
|---|---|---|
application/json | {"key":"value"} | REST-APIs, moderne Webdienste |
text/plain | Simple text response | Statusmeldungen, Protokolle |
text/html | <html><body>...</body></html> | Webseiten, Fehlerseiten |
application/xml | <?xml version="1.0"?><root>...</root> | SOAP-APIs, XML-Daten |
text/csv | name,age,city\nJohn,30,NYC | Datenexport, Tabellenkalkulation |
Hinweise
- Antwortdaten werden immer als Zeichenkette zurückgegeben, unabhängig vom ursprünglichen Format
- Leere Antworten geben eine leere Zeichenkette
""zurück (häufig bei 204-Statuscodes) - Fehlerantworten (4xx, 5xx) können nützliche Fehlerinformationen im Antwortkörper enthalten
- Große Antworten können erheblichen Speicherplatz verbrauchen - erwägen Sie bei Bedarf eine Verarbeitung in Blöcken
- Möglicherweise benötigen Sie zusätzliche Parsing-Bibliotheken, um mit JSON, XML oder anderen strukturierten Formaten zu arbeiten
- Prüfen Sie immer, ob die Antwort leer ist, bevor Sie sie verarbeiten, um Fehler zu vermeiden