web-dev-qa-db-ja.com

PHPでGET / POST / PUT / DELETEリクエストを開始し、リクエストタイプを判断するにはどうすればよいですか?

PUT/DELETEリクエストがどのように送信されるのかわかりません。

PHPでそれを行う方法は?

Curlを使用してGET/POSTリクエストを送信する方法を知っています。

$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookieFile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,   CURLOPT_SSL_VERIFYPEER,   FALSE);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);

しかし、PUT/DELETEリクエストを行う方法は?

15
user198729

DELETEの場合は、curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');を使用します
PUTの場合はcurl_setopt($ch, CURLOPT_PUT, true);を使用します

インストールされているcURLに依存しない別の方法は、file_get_contentsカスタムHTTPストリームコンテキスト で使用することです。

$result = file_get_contents(
    'http://example.com/submit.php', 
    false, 
    stream_context_create(array(
        'http' => array(
            'method' => 'DELETE' 
        )
    ))
);

PHPでREST)を実行する方法に関するこれらの2つの記事を確認してください

47
Gordon

一般的に、「非GET」リクエストを送信する場合は、多くの場合、 curl を使用します。


そして、 curl_setopt 関数を使用して、送信するリクエストを構成します;多数の可能なオプションの中で、リクエスト方法を変更するには、少なくともそれらのオプション(quoting)に興味があるでしょう:

  • CURLOPT_CUSTOMREQUEST:HTTPリクエストを実行するときに「GET」または「HEAD」の代わりに使用するカスタムリクエストメソッド。これは、「DELETE」またはその他のよりあいまいなHTTPリクエストを実行する場合に役立ちます。
  • CURLOPT_HTTPGETTRUEは、HTTPリクエストメソッドをGETにリセットします。
  • CURLOPT_POSTTRUE通常のHTTPPOSTを実行します。
  • CURLOPT_PUTTRUEからHTTPPUTファイル。 PUTへのファイルは、CURLOPT_INFILEおよびCURLOPT_INFILESIZEで設定する必要があります。


もちろん、使用する関数はcurl_setoptだけではありません。 curlを使用してリクエストを送信する方法の例については、 curl_exec のドキュメントページを参照してください。

(はい、その例は非常に単純で、GETリクエストを送信します-しかし、そこからビルドできるはずです;-))

3
Pascal MARTIN