从外部 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 站点的主要内容,如果未能解决你的问题,请参考以下文章

商业 API - RapidAPI

在 vue 中显示来自 rapidapi 的 API 数据

从外部api获取数据

如何在 laravel Controller 中获取 Rapidapi?

如何从外部 API 获取 $_POST 数据 - LARAVEL

缺少 RapidAPI 应用程序密钥(不缺少)