Response:getData()
Mendapatkan konten body respons sebagai string dari respons HTTP.
Tanda Tangan
getData(): string
Mengembalikan
string - Konten body respons sebagai string
Deskripsi
Metode getData() mengambil konten body respons dari respons HTTP. Konten selalu dikembalikan sebagai string, terlepas dari format aslinya (JSON, XML, teks biasa, HTML, dll.).
Contoh
Penggunaan Dasar
-- 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)
Bekerja dengan Data 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)
Menangani Respons 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
Data Respons 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
Data Respons Permintaan 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
Penanganan Respons Kosong
-- 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
Memproses Tipe Konten Berbeda
-- 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
Penanganan Respons Besar
-- 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
Tipe Konten Respons Umum
| Content Type | Example Data | Usage |
|---|---|---|
application/json | {"key":"value"} | REST API, layanan web modern |
text/plain | Simple text response | Pesan status, log |
text/html | <html><body>...</body></html> | Halaman web, halaman error |
application/xml | <?xml version="1.0"?><root>...</root> | SOAP API, data XML |
text/csv | name,age,city\nJohn,30,NYC | Ekspor data, spreadsheet |
Catatan
- Data respons selalu dikembalikan sebagai string, terlepas dari format aslinya
- Respons kosong mengembalikan string kosong
""(umum dengan kode status 204) - Respons error (4xx, 5xx) mungkin berisi informasi error yang berguna dalam body respons
- Respons besar mungkin mengonsumsi memori yang signifikan - pertimbangkan untuk memproses dalam potongan jika diperlukan
- Anda mungkin memerlukan pustaka parsing tambahan untuk bekerja dengan JSON, XML, atau format terstruktur lainnya
- Selalu periksa apakah respons kosong sebelum memproses untuk menghindari error