【问题标题】:API to Database?API 到数据库?
【发布时间】:2016-10-15 22:15:10
【问题描述】:

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


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

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

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

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

【问题讨论】:

    标签: database api opendata


    【解决方案1】:

    我认为使用 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(取自您向我们展示的网站),然后按 Enter 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();
    

    当您按下回车键时,会返回一个响应,说明“对象”。如果您单击箭头,您会看到这是我们刚刚看到的数据的更清晰版本 - 更易于人类阅读。

    在这种情况下,我使用 JavaScript 来检索数据,但您可以使用任何您想要的代码。您可以继续使用 JavaScript 来破译数据、操作数据并将其推送到数据库中。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 您是否知道一种用户友好的工具,我可以使用它来将 API 值提取到数据库/表中而无需编码?只需将 API 插入文本框并单击创建表格的魔术按钮?
      猜你喜欢
      • 2011-10-07
      • 2021-06-10
      • 2020-01-15
      • 2019-03-23
      • 2020-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多