API到数据库?

yan*_*ick 5 database api opendata

请假设我对我将要提到的任何事情一无所知,因为我真的不知道。


大多数 OpenData 站点都可以以 .csv 或 .json 格式(示例)导出呈现的文件。他们也总是有一个 API 选项卡(示例 API)。

我认为使用 API 意味着如果数据更新,您将收到更改,而将其导出为 .csv 意味着内容将不再更改。

我的问题是:如何使用这个 API 代码来显示导出 .csv 文件时会得到的同一个表。

您会使用数据库来提取这些信息吗?什么样的数据库以及如何将 API 链接到数据库?

小智 11

我认为使用 API 意味着如果数据更新,您将收到更改,而将其导出为 .csv 意味着内容将不再更改。

您是正确的,如果您将 csv 下载到您的计算机,则该 csv 文件将不再更新。
API 是您可以调用的东西——在这种情况下,您可以调用 API,说“嘿,您有 xxx 的最新数据吗?”,您将收到有关您所询问内容的最新信息。但这并不意味着,当有新更新时,此站点会通知您 - 您必须不断调用 API(每小时、每天等)以查看是否有任何更改。

我的问题是:如何使用这个 API 代码来显示导出 .csv 文件时会得到的同一个表。

你会:

  1. 从服务器代码或云服务调用 API
  2. 让服务器代码或云服务解密(或“解析”)响应
  3. 使用解密后的响应创建由 HTML 组成的表格,或将其放入数据库

您会使用数据库来提取这些信息吗?什么样的数据库以及如何将 API 链接到数据库?

您不一定需要数据库来提取信息,尽管将最终数据放入数据库会很好。
您首先需要某种方式来“调用 REST API”。有很多方法可以做到这一点 - 使用 Shell 脚本、使用 Python、使用 Excel VBA 等。
我知道这很难形象化,所以这里是第 1 步的示例,您可以在其中检索信息。
尝试在 Chrome 浏览器的地址栏中输入以下 URL(取自您向我们展示的站点),然后点击输入 http://opendata.brussels.be/api/records/1.0/search/?dataset=associations-俱乐部运动

看看它如何返回大量带有许多括号和逗号的文本?您基本上已经要求该站点为您提供一些数据,这是他们返回的响应(不同浏览器的工作方式不同 - IE 要求您将响应下载为 .json 文件)。您基本上已经调用了 API。

要更清晰地查看这些数据,请打开 Chrome 浏览器的开发者工具,然后输入以下 JavaScript 代码

var url = 'http://opendata.brussels.be/api/records/1.0/search/?dataset=associations-clubs-sportifs';

var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onload = function() {
    if (xhr.status === 200) {
        // success
        console.log(JSON.parse(xhr.responseText));
    } else {
        // error
        console.log(JSON.parse(xhr.responseText));
    }
};
xhr.send();
Run Code Online (Sandbox Code Playgroud)

当您按 Enter 键时,会返回一个响应,指出“对象”。如果您单击箭头,您会看到这是我们刚刚看到的数据的更清晰版本 - 更具人类可读性。

在此处输入图片说明

在本例中,我使用 JavaScript 来检索数据,但您可以使用任何您想要的代码。您可以继续使用 JavaScript 来解密数据、操作它并将其推送到数据库中。

kintone是一个在线云数据库,您可以在其中自定义它以运行 JavaScript 代码,并将数据存储在他们的数据库中,因此您将像下图一样在线存储数据。这只是您可以使用的数据库的一个示例。

在此处输入图片说明

还有其他云服务允许您将不同服务的 API 端点相互连接,例如 IFTTT 和 Zapier,但我不确定它们是否与开放数据连接。