Response
The Response object contains the result of an HTTP request made with the Request module. It provides access to the response data, status code, and other metadata returned by the server.
Overview
Response objects are returned by HTTP request methods such as get()
, post()
, put()
, patch()
, and delete()
. They encapsulate the server's response and provide methods to access the response content and metadata.
Methods
getData(): string
Get the response body content as a string.
Returns
string
- The response body content
getResponseCode(): number
Get the HTTP status code from the response.
Returns
number
- The HTTP status code (e.g., 200, 404, 500)
Common Usage Pattern
-- 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
HTTP Status Code Categories
Status Range | Meaning | Typical Response |
---|---|---|
200-299 | Success | Contains requested data or confirmation |
300-399 | Redirection | Usually empty or contains redirect info |
400-499 | Client Error | Contains error description |
500-599 | Server Error | Contains error description |
Response Data Formats
Response data is always returned as a string, regardless of the original format:
- JSON:
"{\"key\":\"value\"}"
- May need parsing if you have a JSON parser - XML:
"<?xml version=\"1.0\"?><root>...</root>"
- XML content as string - Plain Text:
"Simple text response"
- Direct text content - HTML:
"<html><body>...</body></html>"
- HTML content as string - Empty:
""
- No content (common with 204 responses)
Best Practices
- Always check status code first before processing response data
- Handle empty responses gracefully, especially with 204 status codes
- Check response content even for error responses as they may contain useful information
- Be prepared for network errors that may prevent a response object from being created
Examples
Basic Response Handling
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
Error Handling
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
Working with Different HTTP Methods
-- 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())