从外部 API RapidApi 获取数据到 Wordpress 站点
Posted
技术标签:
【中文标题】从外部 API RapidApi 获取数据到 Wordpress 站点【英文标题】:Fetching data from external API RapidApi to Wordpress site 【发布时间】:2019-07-19 00:32:22 【问题描述】:我正在尝试从此 API 获取数据:
https://rapidapi.com/apilayernet/api/rest-countries-v1?
endpoint=53aa5a08e4b0a705fcc323a6
我设法使用 wp_remote_get() 发出请求,但除了错误之外,我一直没有显示任何结果:
The site is experiencing technical difficulties.
我只是指出我已经使用 Composer 在包含请求的 XAMPP 正确文件夹中设置了 Composer.json 文件:
"require-dev":
"mashape/unirest-php": "3.*"
在我的代码中,我包含了 API 密钥的参数,如下所示,但由于某种原因无法正常工作:
$request = wp_remote_get( 'https://restcountries-v1.p.rapidapi.com/all',
array(
"X-RapidAPI-Host" => "restcountries-v1.p.rapidapi.com",
"X-RapidAPI-Key" => "7fc872eb0bmsh1baf0c288235a1ep114aecjsn18f888f020c0"
) );
if( is_wp_error( $request ) )
return false; // Bail early
$body = wp_remote_retrieve_body( $request );
$data = json_decode( $body );
echo $data;
【问题讨论】:
文档中的示例使用 POST 请求,尝试更改为wp_remote_post()
方法而不是 wp_remote_get()
这是我的理解:POST 用于将数据添加到外部 API 的数据库中,但在我的情况下,我想从 API 中检索数据并且我认为我应该使用 GET?我也尝试使用 POST 看看会发生什么,结果仍然相同。还是谢谢
【参考方案1】:
wp_remote_get
接受一个选项数组作为第二个参数,但您直接传递了标头。
它们应该位于选项内的嵌套headers
数组中。
方法文档:https://codex.wordpress.org/Function_Reference/wp_remote_get
$request = wp_remote_get('https://restcountries-v1.p.rapidapi.com/all', [
'headers' => [
'X-RapidAPI-Host' => 'restcountries-v1.p.rapidapi.com',
'X-RapidAPI-Key' => '<apikey>',
],
]);
if (is_wp_error($request))
return false; // Bail early
$body = wp_remote_retrieve_body($request);
$data = json_decode($body);
echo $data;
【讨论】:
什么意思?【参考方案2】:这是我所有从 Wordpress 获取的方法
$url = 'https://restcountries-v1.p.rapidapi.com/all'; //define url
$response = wp_remote_get($url, array(
'headers'=> array('X-RapidAPI-Host' => 'restcountries-v1.p.rapidapi.com', //set header
'X-RapidAPI-Key' => '<apikey>'//set api key
),
'method' => 'GET',//set method
));
$decode = json_decode($response);// decode response
echo "<pre>"; print_r($decode); die('dead');// display response on page wiothout any other information.
【讨论】:
是的,感谢您的友好回复。对于其他读者,我从另一个类似问题中得到了我的问题的答案,即使与 wp 无关,它也适用于 wp:***.com/questions/53281830/…以上是关于从外部 API RapidApi 获取数据到 Wordpress 站点的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel Controller 中获取 Rapidapi?