他の方法
GET と POST は HTTP リクエストを行う際に最も一般的に使用される方法ですが、DELETE、PUT、PATCH、OPTIONS など、他にも多くの方法があります。
WordPress HTTP API には各メソッドのための特定のヘルパー関数はありませんが、WordPress を開発している素晴らしい人々がそれを考慮し、wp_remote_request()
を提供してくれました。この関数は wp_remote_get()
と同じ 2 つのパラメータを受け取り、HTTP メソッドを指定することも可能です。渡す必要があるデータは、あなたのメソッド次第です。
例えば、DELETE メソッドを送信するには、次のようなものになるかもしれません:
$args = array(
'method' => 'DELETE',
);
$response = wp_remote_request( 'http://some-api.com/object/to/delete', $args );
オプション
おそらく今までに気づいたように、すべてのヘルパー関数は、リクエストに追加のオプションを設定するための 2 番目の $args
パラメータを取ります。
例えば、timeout
は接続が切断され、エラーが返される前の時間を秒単位で設定することを可能にします。httpversion
引数は HTTP バージョンを設定し、デフォルトは ‘1.0’ ですが、やり取りしているサービスによっては ‘1.1’ に設定する必要があるかもしれません。
すべての利用可能なオプションとその機能については、WP_Http::request()
メソッドのドキュメントを確認してください。
ヘッダー
リソースの状態を取得する前に HEAD を使用して確認することは非常に重要であり、時には API によって要求されることもあります。トラフィックの多い API では、GET は通常、1 分または 1 時間あたりのリクエスト数に制限されます。HEAD リクエストが API 上のデータが更新されたことを示さない限り、GET リクエストを試みる必要はありません。
GitHub の例に戻ると、注意すべきいくつかのヘッダーがあります。これらのヘッダーのほとんどは標準ですが、どのヘッダーが何と呼ばれているのか、そしてその目的を理解するために API ドキュメントを常に確認するべきです。
x-ratelimit-limit
– 一定期間内に許可されるリクエストの数x-ratelimit-remaining
– 一定期間内に残っている利用可能なリクエストの数content-length
– コンテンツのサイズ(バイト単位)。コンテンツがかなり大きい場合にユーザーに警告するのに役立ちますlast-modified
– リソースが最後に変更された日時。キャッシングツールに非常に役立ちますcache-control
– クライアントがキャッシュをどのように処理すべきか
以下は、私の GitHub ユーザーアカウントの HEAD 値を確認します:
$response = wp_remote_head( 'https://api.github.com/users/wordpress' );
$response
は次のようになります:
Array(
[headers] => Array
(
[server] => nginx
[date] => Fri, 05 Oct 2012 05:21:26 GMT
[content-type] => application/json; charset=utf-8
[connection] => close
[status] => 200 OK
[vary] => Accept
[x-ratelimit-remaining] => 4982
[content-length] => 594
[last-modified] => Fri, 05 Oct 2012 04:39:58 GMT
[etag] => "5d5e6f7a09462d6a2b473fb616a26d2a"
[x-github-media-type] => github.beta
[cache-control] => public, s-maxage=60, max-age=60
[x-content-type-options] => nosniff
[x-ratelimit-limit] => 5000
)
[body] =>
[response] => Array
(
[preserved_text 39a8515bd2dce2aa06ee8a2a6656b1de /] => 200
[message] => OK
)
[cookies] => Array(
)
[filename] =>
)
すべての同じヘルパー関数は、前の 2 つの関数と同様にこの関数でも使用できます。ここでの例外は、HEAD は決してボディを返さないため、その要素は常に空であることです。