API到数据库的连接?

12

请假设我对我将要提到的任何事情都一无所知,因为实际上我确实一无所知。


大多数开放数据网站都可以将呈现的文件导出为例如 .csv 或 .json 格式 (示例)。它们也总是有一个 API 选项卡 (示例 API)。

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

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

您是否需要使用数据库来提取此信息?使用什么类型的数据库以及如何将 API 与数据库连接?

3个回答

14
我猜使用API意味着如果数据更新了,你会收到更改的通知,而导出为.csv文件则意味着内容不会再更改。您是正确的,如果您将csv文件下载到计算机上,则该csv文件将不再更新。API是您需要调用的东西 - 在这种情况下,您可以调用API,询问“嘿,您是否有xxx的最新数据?”,然后您将收到有关您所询问的最新信息。但这并不意味着当有新更新时,该站点会通知您 - 您必须继续调用API(每小时、每天等)以查看是否有任何更改。
我的问题是,如何使用此API代码显示与导出.csv文件得到的相同表格。
您应该: 1. 从服务器代码或云服务中调用API。 2. 让服务器代码或云服务对响应进行解析。 3. 使用解密后的响应创建由HTML组成的表格,或将其放入数据库中。
您是否需要使用数据库来提取这些信息?如果需要,您需要使用什么类型的数据库,并如何将API链接到数据库中?
并不一定需要使用数据库来提取信息,但是将最终数据放入数据库中会更好。
您首先需要某种方法来“调用REST API”。有许多方法可以做到这一点 - 使用Shell脚本、使用Python、使用Excel VBA等。
我理解这很难想象,因此这里有一个第一步的示例,您可以在其中检索信息。
尝试将下面的URL(从您展示给我们的网站中获取)放入Chrome浏览器的地址栏中,然后按回车键: 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”。如果您通过箭头点击,您可以看到这是我们刚刚看到的数据的更干净的版本 - 更易读。

enter image description here

在这种情况下,我使用JavaScript来检索数据,但您可以使用任何代码。您可以继续使用JavaScript来解密数据,操纵它,并将其推入数据库中。 kintone是一个在线云数据库,您可以自定义它以运行JavaScript代码,并将其存储在他们的数据库中,因此您将像下面的图像中一样在线存储数据。这只是您可以使用的数据库之一。

enter image description here

还有其他云服务可以让您将不同服务的API端点连接在一起,例如IFTTT和Zapier,但我不确定它们是否与开放数据连接。


0

你链接的页面显示API返回值为JSON对象。要访问数据,只需发送适当的HTTP请求,响应将是所请求的数据作为JSON。如果需要,您可以通过浏览器发送此类请求。

大多数编程语言允许以编程方式操作JSON对象,如果需要对数据进行处理,则可以使用该功能。


你是否知道有没有一款用户友好的工具,可以让我在不编写代码的情况下将API值提取到数据库/表中?只需将API插入文本框,然后点击一个魔法按钮即可创建一个表格? - yannick

0

Restful API的发布模式是“请求和发布”。当您通过API端点请求数据时,您将收到JSON对象、CSV表格或XML格式的响应字符串。

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

如果您想将表格作为关系型数据表格下载到CSV文件中,则需要将JSON对象解析为关系型表格。这可能有些棘手,因为每个JSON响应字符串的路径都可能不同。

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

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

Acho API解析器


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接