首页 > 解决方案 > 从私有 API 读取数据

问题描述

我为我一直在玩的一款游戏找到了这个私有 API,它可以让我创建一个非常酷的个人资料搜索网站,但是这个 API 的结构有点奇怪,我不完全确定如何从这种类型的 API 中调用元素。

{
"status": "success",
"id": "some_id_here",
"denormalized": {
    "some_url_here": {
        "data": {
            "created": "2019-01-10T04:19:21Z",
            "registered": 1547093961,
            "gender": "f",
            "display_name": "",
            "age": 23,
            "country": "US",
            "state": "NY",
        },  
    },
}

以上是平台拥有的 API 类型,当我滚动浏览它时,它看起来只是前端元素(化妆品)等的私有 API,我已经排除了任何可能是个人的东西。

有人可以帮助我弄清楚如何从这里打电话吗?对于每个唯一用户,包含的部分some_url_here都不同,我已经完成了以下操作。

$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_URL => "some_website_url",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$response = json_decode($response, true); //because of true, it's in an array
print '<pre>';
print_r($response);
print '</pre>';

但话虽如此,我无法超越

[denormalized] => Array
        (
            [url-here] => Array
                (
                    [data] =>

部分返回后面的内容[data]

标签: phpapi

解决方案


您可以使用迭代非规范化的键/值对foreach。例如

foreach ($response['denormalized'] as $url => $value) {
    $data = $value['data'];

    $created = $data['created'];
    $registered = $data['registered'];
    // and so on
}

演示 ~ https://3v4l.org/AtXCQ


推荐阅读