作者:兔子狗530_772 | 来源:互联网 | 2023-09-18 19:35
有时您可能希望向远程外部Api发出请求以获取一些数据。也许您想在博客上显示最新的微博内容,或者您想从其他WordPress网站获取最新的文章。对于这些情况,WordPress具有wp_remote_get和wp_remote_post函数。发出获取(Get)请求
有时您可能希望向远程/外部Api发出请求以获取一些数据。也许您想在博客上显示最新的微博内容,或者您想从其他WordPress网站获取最新的文章。对于这些情况,WordPress具有wp_remote_get
和wp_remote_post
函数。
发出获取(Get)请求
'1.1',
'blocking' => true
));
return json_decode(wp_remote_retrieve_body($response)) ?: [];
}
在此代码段中,我们创建一个名为do_remote_get
的新函数,该函数除了一个名为$url
的参数外,该参数必须为string
类型。在我们的新函数中,我们使用wp_remote_get
函数发出实际的http请求。wp_remote_get
函数接受两个参数:
$url
(String):要调用的远程URL /端点。在这种情况下,我们将传递给do_remote_get
函数的$url
变量传递给它。$args
(Array):请求的参数数组。这个数组可以有很多参数,但是在我们的例子中,我们只使用了两个。要使用的httpversion
,并且我们将blocking
设置为true
,这意味着调用代码需要请求的结果。
请求完成后,我们将$response
传递给名为wp_remote_retrieve_body
的函数。此函数检查响应是不是WP_Error
对象,并具有有效的“ Body
”。如果这样做,它将返回响应主体 Body
。如果不是,它将返回一个空字符串。
然后,我们将输出传递给json_decode
函数以解码返回的Json数据。现在请记住,wp_remote_retrieve_body
函数的返回值可以是一个空字符串,从而使json_decode
返回一个伪造的
值。这就是为什么我们在最后使用三元运算符?:[]
来确保始终返回数组的原因。
现在,我们可以向Api发出get
请求,如下所示:
{$post->title}";
}
在此示例中,我们使用新的do_remote_get
函数向JSONPlaceholderApi发出Get请求,并获取一些(假)文章。然后,我们遍历文章并回显其标题。
注意:在此示例中,我们从do_remote_get
函数中获取了对象数组。如果您希望将对象作为关联数组,则可以将true
作为seccond
参数传递给json_decode
函数。
发出提交(Post)请求
在上面的示例中,我们使用wp_remote_get
从远程Api获取一些文章。接下来,我们将处理提交请求,以在远程Api上创建文章。
'1.1',
'blocking' => true,
'body' => $data
));
return json_decode(wp_remote_retrieve_body($response)) ?: [];
}
对于Post请求,我们创建一个名为do_remote_pos
t的新函数,该函数与do_remote_get
函数相似,但是第二个参数$data
保留要发送到远程Api的数据。
在do_remote_post
函数中,我们现在使用wp_remote_post
函数发出请求。wp_remote_post
函数接受相同的参数,和wp_remote_get
一一对应。对于arguments
数组,我们传递了一个额外的参数 body
,并将$data
数组变量传递给了它。
现在,我们可以发出提交请求,以在Api上创建一个新文章,如下所示:
1,
'title' => 'foo',
'body' => 'bar'
]);
var_dump($response);
在这里,我们使用do_remote_post
函数向JSONPlaceholder Api发出发布请求,并向其传递网址/端点和代表我们要创建的发布的数组。
最后,我们使用var_dump打印来自Api的响应。JSONPlaceholder Api将仅返回我们创建的文章的Json对象。
注意:Api请求需要花费一些时间才能解决,因此最好将其缓存以加快页面加载速度。建议使用WordPress瞬态来缓存Api请求结果 。
以上内容出自: https://since1979.dev/snippet-007-get-and-post-to-remote-api-with-php/ ,由 WordPress大学 翻译整理。
拓展阅读
《 WordPress HTTP API 指南 》:本系列将详细讲解 WordPress HTTP API,涉及到常见的原创获取数据 wp_remote_get 和远程提交数据 wp_remote_post 等功能。