以下是 HTTP API 的一些高级用法。

其他方法

GET 和 POST 是发起 HTTP 请求时最常用的方法,但还有许多其他方法,例如 DELETE、PUT、PATCH、OPTIONS 等。

WordPress HTTP API 没有为每种方法提供特定的辅助函数,但请放心,开发 WordPress 的杰出团队已经考虑到这一点,并贴心地提供了 wp_remote_request()。该函数接受与 wp_remote_get() 相同的两个参数,并允许您指定 HTTP 方法。您需要传递什么数据取决于您的方法。

例如,发送 DELETE 方法时,代码可能如下所示:

$args     = array(
	'method' => 'DELETE',
);
$response = wp_remote_request( 'http://some-api.com/object/to/delete', $args );

选项

如您现在可能已经注意到,所有辅助函数都接受第二个 $args 参数,允许您设置请求的其他选项。

例如,timeout 用于设置连接断开并返回错误之前的秒数。httpversion 参数设置 HTTP 版本,默认值为 '1.0',但根据您交互的服务不同,您可能需要将其设置为 '1.1'。

请查阅 WP_Http::request() 方法的文档以获取所有可用选项及其说明。

头部信息

在获取资源之前使用 HEAD 检查资源状态可能非常重要,有时也是 API 所要求的。在高流量的 API 中,GET 请求通常每分钟或每小时有数量限制。除非 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] =>
)


所有相同的辅助函数均可在此函数中使用,与前面两个函数一样。这里的例外情况是 HEAD 永远不会返回 body,因此该元素将始终为空。