Chuyển tới nội dung chính

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ĩaPhản hồi điển hình
200-299Thành côngChứa dữ liệu được yêu cầu hoặc phần xác nhận
300-399Chuyển hướngThường rỗng hoặc chứa thông tin chuyển hướng
400-499Lỗi máy kháchChứa mô tả lỗi
500-599Lỗ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

  1. Luôn kiểm tra mã trạng thái trước khi xử lý dữ liệu phản hồi
  2. 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
  3. 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
  4. 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())