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 レスポンスでよく見られます)
ベストプラクティス
- 常にステータスコードを先に確認 してからレスポンスデータを処理する
- 空のレスポンスを適切に処理 する(特に 204 ステータスコード)
- エラーレスポンスでも内容を確認 する(有用な情報が含まれている場合があります)
- ネットワークエラーへの備え をしておく(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())