API 到数据库?

API to Database?

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


大多数 OpenData 站点都可以导出所呈现的文件,例如 .csv 或 .json 格式 (Example). They also always have an API tab (Example API)。

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

我的问题是:如何使用此 API 代码来显示与导出 .csv 文件时相同的 table。

你会使用数据库来提取这些信息吗?什么样的数据库,你如何link API 到数据库?

您链接到的页面显示 API returns 值作为 JSON 对象。要访问数据,您只需发送适当的 http 请求,响应将是 JSON 形式的请求数据。如果需要,您可以通过浏览器发送这样的请求。

如果您需要处理数据,大多数语言都允许 JSON 以编程方式操作对象。

I presume using the API would mean that if the data is updated you would receive the change whereas exporting it as .csv would mean the content will not be changed anymore.

从某种意义上说,如果您将 csv 下载到您的计算机,则该 csv 文件将不再更新。
API 是您要调用的东西 - 在这种情况下,您可以调用 API,说 "Hey, do you have the latest data on xxx?",您将得到有关您所问内容的最新信息。但这并不意味着该站点会在有新更新时通知您 - 您必须继续致电 API(每小时、每天等)以查看是否有任何更改。

My questions is: how does one use this API code to display the same table one would get when exporting a .csv file.

你会:

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

Would you use a database to extract this information? What kind of database and how do you link the API to the database?

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

看看它是如何返回大量带有许多括号和逗号的文本的?您基本上已经要求网站给您一些数据,这是他们返回的响应(不同的浏览器工作方式不同 - 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();

当您按下回车键时,会返回一个响应,显示 "Object"。如果单击箭头,您可以看到这是我们刚刚看到的数据的更清晰版本 - 更易于阅读。

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

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

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

Restful APIs 发布模型是“请求和发布”。当您通过 API 端点请求数据时,您将在 JSON 对象、CSV tables 或 XML.

中收到响应字符串

在这种情况下,发布者 Opendata.brussel.be 会定期更新他们的数据库并通过 API 端点发布结果。

如果您想将 table 下载为 CSV 文件中的关系数据 table,您需要将 JSON 对象解析为关系 table秒。这可能很棘手,因为每个 JSON 响应字符串的路径可能不同。

有几种方法可以做到这一点。您可以编写脚本来拼合 JSON 对象,也可以使用工具为您解析和拼合对象。

我使用名为 Acho 的工具将 API 端点转换为 CSV 文件。它会通过参数解析几乎所有 API 端点,甚至可以配置多个请求,例如迭代和递归请求。

Acho API parser