Перейти к основному содержимому

Response

Объект Response содержит результат HTTP-запроса, выполненного с помощью модуля Request. Он предоставляет доступ к данным ответа, коду состояния и другим метаданным, возвращаемым сервером.

Обзор

Объекты Response возвращаются методами HTTP-запросов, такими как get(), post(), put(), patch() и delete(). Они инкапсулируют ответ сервера и предоставляют методы для доступа к содержимому и метаданным ответа.

Методы

getData(): string

Возвращает содержимое тела ответа в виде строки.

Возвращаемое значение

string — содержимое тела ответа

getResponseCode(): number

Возвращает код состояния HTTP из ответа.

Возвращаемое значение

number — код состояния HTTP (например, 200, 404, 500)

Стандартный шаблон использования

-- 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

ДиапазонЗначениеТипичный ответ
200-299УспехСодержит запрошенные данные или подтверждение
300-399ПеренаправлениеОбычно пусто или содержит информацию о перенаправлении
400-499Ошибка клиентаСодержит описание ошибки
500-599Ошибка сервераСодержит описание ошибки

Форматы данных ответа

Данные ответа всегда возвращаются в виде строки, независимо от исходного формата:

  • JSON: "{\"key\":\"value\"}" — может потребовать анализа, если у вас есть парсер JSON
  • XML: "<?xml version=\"1.0\"?><root>...</root>" — XML-содержимое в виде строки
  • Простой текст: "Simple text response" — прямое текстовое содержимое
  • HTML: "<html><body>...</body></html>" — HTML-содержимое в виде строки
  • Пусто: "" — нет содержимого (часто бывает с ответами 204)

Рекомендации

  1. Всегда сначала проверяйте код состояния перед обработкой данных ответа
  2. Корректно обрабатывайте пустые ответы, особенно с кодами состояния 204
  3. Проверяйте содержимое ответа даже для ответов с ошибками, так как они могут содержать полезную информацию
  4. Будьте готовы к сетевым ошибкам, которые могут помешать созданию объекта ответа

Примеры

Базовая обработка ответа

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

Обработка ошибок

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

Работа с различными HTTP-методами

-- 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())