Response
Đối tượng Response chứa kết quả của một HTTP request được tạo bằng module Request. Nó cung cấp quyền truy cập vào dữ liệu phản hồi, mã trạng thái và các siêu dữ liệu khác do máy chủ trả về.
Tổng quan
Các đối tượng Response được trả về bởi các phương thức HTTP request như get(), post(), put(), patch(), và delete(). Chúng đóng gói phản hồi của máy chủ và cung cấp các phương thức để truy cập nội dung phản hồi và siêu dữ liệu.
Phương thức
getData(): string
Lấy nội dung thân phản hồi dưới dạng chuỗi.
Trả về
string - Nội dung thân phản hồi
getResponseCode(): number
Lấy mã trạng thái HTTP từ phản hồi.
Trả về
number - Mã trạng thái HTTP (ví dụ: 200, 404, 500)
Mẫu sử dụng phổ biến
-- Tạo một request và xử lý phản hồi
local response = Request("https://api.example.com/data"):get()
-- Lấy mã trạng thái để kiểm tra xem request có thành công không
local statusCode = response:getResponseCode()
if statusCode == 200 then
-- Request thành công, lấy dữ liệu
local data = response:getData()
print("Response data: " .. data)
else
-- Request thất bại, xử lý lỗi
print("Request failed with status: " .. statusCode)
local errorData = response:getData()
if errorData and errorData ~= "" then
print("Error details: " .. errorData)
end
end
Các nhóm mã trạng thái HTTP
| Khoảng trạng thái | Ý nghĩa | Phản hồi điển hình |
|---|---|---|
| 200-299 | Thành công | Chứa dữ liệu được yêu cầu hoặc phần xác nhận |
| 300-399 | Chuyển hướng | Thường rỗng hoặc chứa thông tin chuyển hướng |
| 400-499 | Lỗi máy khách | Chứa mô tả lỗi |
| 500-599 | Lỗi máy chủ | Chứa mô tả lỗi |
Các định dạng dữ liệu phản hồi
Dữ liệu phản hồi luôn được trả về dưới dạng chuỗi, bất kể định dạng gốc:
- JSON:
"{\"key\":\"value\"}"- Có thể cần phân tích cú pháp nếu bạn có bộ phân tích JSON - XML:
"<?xml version=\"1.0\"?><root>...</root>"- Nội dung XML dưới dạng chuỗi - Văn bản thuần:
"Simple text response"- Nội dung văn bản trực tiếp - HTML:
"<html><body>...</body></html>"- Nội dung HTML dưới dạng chuỗi - Rỗng:
""- Không có nội dung (thường gặp với phản hồi 204)
Thực hành tốt nhất
- Luôn kiểm tra mã trạng thái trước khi xử lý dữ liệu phản hồi
- Xử lý khéo léo các phản hồi rỗng, đặc biệt với mã trạng thái 204
- Kiểm tra nội dung phản hồi ngay cả với các phản hồi lỗi vì chúng có thể chứa thông tin hữu ích
- Chuẩn bị cho các lỗi mạng có thể ngăn đối tượng phản hồi được tạo ra
Ví dụ
Xử lý phản hồi cơ bản
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
Xử lý lỗi
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
Làm việc với các phương thức HTTP khác nhau
-- 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())