メインコンテンツまでスキップ

Response

Response オブジェクトは、Request モジュールで作成した HTTP リクエストの結果を保持します。サーバーから返されたレスポンスデータ、ステータスコード、その他のメタデータにアクセスできます。

概要

Response オブジェクトは、get()post()put()patch()delete() などの HTTP リクエストメソッドから返されます。サーバーのレスポンスをカプセル化し、レスポンスの内容やメタデータにアクセスするためのメソッドを提供します。

メソッド

getData(): string

レスポンスボディの内容を文字列として取得します。

戻り値

string - レスポンスボディの内容

getResponseCode(): number

レスポンスから HTTP ステータスコードを取得します。

戻り値

number - HTTP ステータスコード(例: 200、404、500)

一般的な使用パターン

-- リクエストを作成し、レスポンスを処理する
local response = Request("https://api.example.com/data"):get()

-- ステータスコードを取得してリクエストの成否を確認
local statusCode = response:getResponseCode()

if statusCode == 200 then
-- リクエスト成功、データを取得
local data = response:getData()
print("Response data: " .. data)
else
-- リクエスト失敗、エラーを処理
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. ネットワークエラーへの備え をしておく(Response オブジェクトの作成自体が行われない場合があります)

基本的なレスポンス処理

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 リクエスト
local getResponse = Request("https://api.example.com/data"):get()
print("GET status: " .. getResponse:getResponseCode())

-- POST リクエスト
local postResponse = Request("https://api.example.com/data")
:setParameter("key", "value")
:post()
print("POST status: " .. postResponse:getResponseCode())

-- DELETE リクエスト
local deleteResponse = Request("https://api.example.com/data/123"):delete()
print("DELETE status: " .. deleteResponse:getResponseCode())