他の方法

GET と POST は HTTP リクエストを行う際に最も一般的に使用される方法ですが、DELETE、PUT、PATCH、OPTIONS など、他にも多くの方法があります。

WordPress HTTP API には各メソッドのための特定のヘルパー関数はありませんが、WordPress を開発している素晴らしい人々がそれを考慮し、wp_remote_request() を提供してくれました。この関数は wp_remote_get() と同じ 2 つのパラメータを受け取り、HTTP メソッドを指定することも可能です。渡す必要があるデータは、あなたのメソッド次第です。

例えば、DELETE メソッドを送信するには、次のようなものになるかもしれません:

  1. $args = array(
  2. 'method' => 'DELETE',
  3. );
  4. $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 値を確認します:

  1. $response = wp_remote_head( 'https://api.github.com/users/wordpress' );

$response は次のようになります:

  1. Array(
  2. [headers] => Array
  3. (
  4. [server] => nginx
  5. [date] => Fri, 05 Oct 2012 05:21:26 GMT
  6. [content-type] => application/json; charset=utf-8
  7. [connection] => close
  8. [status] => 200 OK
  9. [vary] => Accept
  10. [x-ratelimit-remaining] => 4982
  11. [content-length] => 594
  12. [last-modified] => Fri, 05 Oct 2012 04:39:58 GMT
  13. [etag] => "5d5e6f7a09462d6a2b473fb616a26d2a"
  14. [x-github-media-type] => github.beta
  15. [cache-control] => public, s-maxage=60, max-age=60
  16. [x-content-type-options] => nosniff
  17. [x-ratelimit-limit] => 5000
  18. )
  19. [body] =>
  20. [response] => Array
  21. (
  22. [preserved_text 39a8515bd2dce2aa06ee8a2a6656b1de /] => 200
  23. [message] => OK
  24. )
  25. [cookies] => Array(
  26. )
  27. [filename] =>
  28. )

すべての同じヘルパー関数は、前の 2 つの関数と同様にこの関数でも使用できます。ここでの例外は、HEAD は決してボディを返さないため、その要素は常に空であることです。