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

DELETE リクエストを送信 (http.delete)

宣言

HTTP ステータスコード, レスポンスヘッダーの JSON テキスト, レスポンスボディ = http.delete(URL [, タイムアウト秒数, リクエストヘッダー, リクエストボディデータ, URL を ESCAPE しない ])

宣言(名前付き引数)

20250625 からサポートされ、20260402 以降のバージョンでは進捗パラメータもサポートされます

HTTP ステータスコード, レスポンスヘッダーの JSON テキスト, レスポンスボディ = http.delete{
url = URL;
timeout = タイムアウト秒数;
headers = リクエストヘッダー;
params = Query パラメータ;

-- 以下のリクエストボディパラメータは併用できません。優先順位は multipart > data > json > upload_file
multipart = リクエストボディの multipart フォーム;
data = リクエストボディデータ;
json = リクエストボディの JSON;
upload_file = リクエストボディとしてアップロードするファイルのパス;

download_file = 成功時のレスポンスボディ保存先ファイルパス;
progress = 進捗コールバック関数;
progress_interval_ms = 進捗コールバック間隔(ミリ秒);
}

パラメータ

  • URL
    文字列型。省略可能。リクエスト先の URL アドレスです。このメソッドはデフォルトで URL を escape 処理します。不要な場合は URL を ESCAPE しない パラメータの説明を参照してください
  • タイムアウト秒数
    実数型。省略可能。リクエストのタイムアウト時間です。単位は秒で、デフォルトは 10 です
  • リクエストヘッダー
    テーブル型。省略可能。送信するリクエストのヘッダー情報です。形式は {field1 = value1, field2 = value2, ...} で、デフォルトは {} です
  • Query パラメータ
    テーブル型。省略可能。送信するリクエストの Query パラメータです。形式は {field1 = value1, field2 = value2, ...} で、デフォルトは {} です
  • リクエストボディデータ
    文字列型。省略可能。DELETE で送信する内容です。デフォルトは空文字列です
    20250625 テーブル型の場合は、application/x-www-form-urlencoded 形式にエンコードして送信されます
  • リクエストボディの multipart フォーム
    テーブル型。省略可能。DELETE で送信する multipart フォームデータです。形式は {field1 = value1, field2 = value2, ...} で、デフォルトは {} です
  • リクエストボディの JSON
    テーブル型。省略可能。application/json 形式にエンコードして送信されます
  • リクエストボディとしてアップロードするファイルのパス
    文字列型。省略可能。ファイルデータをリクエストボディとして直接送信します
  • 成功時のレスポンスボディ保存先ファイルパス
    文字列型。省略可能。このパラメータを指定すると、リクエスト成功後のレスポンスボディは保存先のファイルパスになります
  • 進捗コールバック関数
    関数型。省略可能。20260402 以降のバージョンでサポートされます。リクエストのアップロードまたはダウンロードの進捗が変化したときに呼び出され、最初の引数には現在の進捗情報が渡されます
  • 進捗コールバック間隔(ミリ秒)
    整数型。省略可能。20260402 以降のバージョンでサポートされます。進捗コールバックを呼び出す間隔をミリ秒単位で指定します
  • URL を ESCAPE しない
    ブール型。省略可能。true の場合は URL を escape 処理せずにそのままリクエストします。デフォルトは false です
    URL を独自に escape 処理する方法については、lcurl モジュールeasy:escape および easy:unescape を参照してください

戻り値

  • HTTP ステータスコード
    整数型。今回のリクエストの http ステータスコードを返します。リクエストがタイムアウトした場合は -1 を返します
  • レスポンスヘッダーの JSON テキスト
    文字列型または nil。リクエスト完了時にヘッダー情報を JSON 形式で返します。リクエストがタイムアウトした場合は nil を返します
  • レスポンスボディ
    文字列型または nil。リクエスト完了時の内容を返します。レスポンスボディをファイルに保存した場合、この値はファイルパスになります。リクエストがタイムアウトした場合は nil を返します

説明

HTTP/1.1 プロトコルの DELETE メソッドでネットワークリソースをリクエストします。通常はネットワークリソースの削除に使用され、一般に権限の検証が行われます
この関数は処理を譲ることがあり、関数が戻る前に他の スレッド が実行される場合があります

進捗コールバック関数が受け取る info の構造は次のとおりです:

{
count_of_bytes_sent = 送信済みバイト数;
count_of_bytes_expected_to_send = 送信予定バイト数;
count_of_bytes_received = 受信済みバイト数;
count_of_bytes_expected_to_receive = 受信予定バイト数;
}

local code, res_headers, body = http.delete("https://httpbin.org/delete?hello=world&你好=世界", 15, {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)", -- IE8 のリクエストをエミュレート
["Cookie"] = "a=1; b=2; c=3"; -- Cookie も送信
}, "需要发送过去的数据")
if code == 200 then -- 返されたステータスコードが HTTP_OK の場合
sys.alert(body)
end

:上記のコードでは、この章で説明していない関数 sys.alert を使用しています

例(名前付き引数)

local code, res_headers, body = http.delete{
url = "https://httpbin.org/delete";
timeout = 15;
headers = {
["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)"; -- IE8 のリクエストをエミュレート
["Cookie"] = "a=1; b=2; c=3"; -- Cookie も送信
};
params = {
["hello"] = "world";
["你好"] = "世界";
};
data = "需要发送过去的数据";
}
if code == 200 then -- 返されたステータスコードが HTTP_OK の場合
sys.alert(body)
end

:上記のコードでは、この章で説明していない関数 sys.alert を使用しています